【问题标题】: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 的引用)