【问题标题】:What is the best practice for distributing a component that is used by .NET 3.5 and 4.0 applications?分发 .NET 3.5 和 4.0 应用程序使用的组件的最佳实践是什么?
【发布时间】:2013-07-25 13:56:27
【问题描述】:

我需要为 3.5 和 4.0 .NET 应用程序提供一个组件。以下是事实:

  1. 3.5 和 4.0 .NET 应用程序都使用组件
  2. 组件作为 Nuget 包分发
  3. 组件依赖于 System.Threading.dll(面向 3.5 时,引用了 backport;面向 4.0 时,间接引用了框架程序集)

我能想到几种方法:

  1. 和 ILMerge (/internalize) System.Threading.dll 针对 3.5 构建
  2. 针对 3.5 4.0 构建:为 3.5 和 4.0 构建配置创建单独的 .csproj 文件。 Nuget 包将包含两组程序集。
  3. 针对 3.5 4.0 构建:重用 .csproj 文件并创建新的项目配置以通过向 .csproj 文件添加条件任务来针对 3.5 和 4.0 构建。 Nuget 包将包含两组程序集。

选项 2 和 3 只是在生成程序集的方式上有所不同,因为分布相同。我过去曾使用过一次选项 3,但效果不太好,因为它不能很好地与 Visual Studio 项目编辑器配合使用。

我想知道我所描述的场景是否有最佳实践或每种方法的优缺点。

版主注意事项:我知道这是一个有点主观的问题,请随时对其进行编辑以使其更客观。但是,请不要锁定/删除它,因为我确实需要就此获得建议。

【问题讨论】:

  • 这听起来很不健康。不允许您自己引用 System.Threading.dll。它是一个不包含任何代码的垫片程序集。只需 [TypeForwardedTo] 属性即可将类型移动到另一个程序集。您的计划可能会给客户程序员带来很多难以诊断的问题。
  • 我澄清了。 .NET 4.0 不直接引用 System.Threading.dll。 .NET 3.5 引用了反向端口(与 Rx 相同的东西)。

标签: .net build nuget


【解决方案1】:

我将针对这两个框架进行编译,并分发一个包含 Net35 和 Net40 目录的 NuGet 包。然后,我将向 System.Threading.Tasks NuGet 包 (http://www.nuget.org/packages/System.Threading.Tasks) 添加一个依赖项。这是最佳实践,因为它可以确保您的本地包目录包含任何版本的框架所需的一切。

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多