我有一个包X,取决于另一个包Y。默认情况下(Visual 2015 Upd3 +Nuget3.5),引用包X的任何项目也将参照包Y更新。问题是,X的客户根本不需要引用Y,因为包Y的API不是也不应该暴露给客户。
因此,预期的行为如下:在添加了对包X的引用之后,包Y的内容应该在构建时复制到输出文件夹中,但是包Y不应该添加到项目引用中。
有什么办法吗?
理论上,我们可以将基础设施包Y的来源包含到我们的项目X中(这两个项目都是MIT许可下的开源项目),但我更喜欢使用或多或少的标准方法。
我们需要它的例子:
Microsoft.DiaSymReader包)。我们不希望我们的所有测试项目引用Microsoft.DiaSymReader程序集。后一种情况要糟糕得多,因为我们显然不能将roslyn源合并到我们的项目中,而且也不能将roslyn二进制文件作为包的一部分分发。
欢迎任何建议!
发布于 2016-11-16 07:13:19
您可以将包Y的dll作为内容文件添加到包X中,这不会将Y dll添加到安装了X包的项目中。
下面的步骤显示了如何使用Y dll作为内容文件创建包X。
现在,当您使用X.nupkg打开包NuGet包资源管理器文件时,您将发现Y dll存储在内容文件夹中。当您在其他项目上安装包X时,Y dll将作为内容文件添加到项目中。生成项目后,Y dll将被复制到输出目录中。
https://stackoverflow.com/questions/40616611
复制相似问题