NuGet包依赖关系

9
每个包依赖其他库时,是否需要解决和安装这些库?
例如,我创建了一个使用 NLog、Postsharp 和 WindowsAzure.Storage 的包:
客户端现在需要安装这些包吗?为什么不能将这些依赖项 DLL 包含在包中?
1个回答

15
当消费者安装您的NuGet包时,NuGet将自动解析并安装相关的依赖包。
可以在包内包含DLL文件,但不建议这样做。因为无论如何,他们都必须引用需要使用您的包的dll文件(在本例中是NLogPostSharpWindowsAzure.Storage)。更好的方法是让消费者控制所安装的库。
通过NuGet进行依赖关系的另一个好处是,消费者可以决定安装更新版本的WindowsAzure.Storage库,当您没有将dll注入到包中时,这可以轻松完成。否则,可能会遇到一些混乱的程序集运行时错误。
您可以通过用于构建NuGet包的nuspec文件来控制您的包含内容。

10
这个回答不太清楚。nuspec 文件应该包含您包的依赖项列表。当用户安装您的包时,NuGet 将查看这些依赖项,并自动安装尚未安装的依赖项。它还将安装这些依赖项的任何依赖项,依此类推。注意:用户不必手动安装依赖项。请参阅 http://docs.nuget.org/create/nuspec-reference 上的“指定依赖项”。 - Kiliman
1
Kiliman,答案中有什么不清楚的地方吗?你没有添加任何答案中已经提到的内容。 - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接