【问题标题】:Embed vs reference my dependencies: Best practices for .NET/NuGet package?嵌入与引用我的依赖项:.NET/NuGet 包的最佳实践?
【发布时间】:2015-07-16 04:03:45
【问题描述】:

我将 C#/.NET 类库作为 NuGet 包提供给我公司内的客户。我的库依赖于其他一些第 3 方库(例如 Newtonsoft's excellent Json.NET)。

我假设 NuGet 的标准工作方式是我的包将仅包含对我所依赖的其他 NuGet 包的引用。当客户在他们的项目中安装我的 NuGet 包时,客户的 Developer Studio 会自动下载它们。

问题 #1:

我可以确定 Developer Studio 会下载 我正在构建的那些 NuGet 包,而不是“最新的” 版本?

问题 #2:

如果他们的项目也使用 3rd-party 库会导致问题 我正在使用(如 Json.NET),特别是如果他们使用不同的版本?这“行得通”吗,还是我需要为此做点什么?

抱歉,如果在某处说明了这一点,但我无法找到这些问题的具体答案。

【问题讨论】:

    标签: c# .net visual-studio nuget


    【解决方案1】:

    Nuspec Reference 中明确说明了这一点

    具体来说:

    指定依赖关系

    从 2.0 版本开始,可以指定包依赖项以根据目标项目的框架配置文件而有所不同。该元素包含一组元素。每个组包含零个或多个元素和一个目标框架属性。 如果目标框架与项目的框架配置文件兼容,则组内的所有依赖项将一起安装。

      <dependencies> 
       <group>
          <dependency id="RouteMagic" version="1.1.0" />
       </group>
       <group targetFramework="net40">
          <dependency id="jQuery" />
          <dependency id="WebActivator" />
       </group>
       <group targetFramework="sl30">
       </group>
    </dependencies>
    

    版本在哪里:

    作为依赖项可接受的版本范围。通常这是 只是代表最低版本的版本号。 但是一个 支持更明确的version range syntax

    更新:更新了对更新版本 nuget 的引用)

    【讨论】:

      猜你喜欢
      • 2018-03-03
      • 2011-10-15
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 2019-08-24
      • 2011-08-16
      • 1970-01-01
      相关资源
      最近更新 更多