我有一个依赖于另一个包 Y 的包 X。默认情况下(Visual Studio 2015 Upd3 + nuget 3.5)任何引用包 X 的项目也将参考包 Y 进行更新。问题是,X 的客户根本不需要参考 Y,因为包 Y 的 API 不是也不应该暴露给客户。
因此,预期的行为如下:添加对包 X 的引用后,包 Y 的内容应在构建时复制到输出文件夹中,但包 Y 不应添加到项目引用中。
有什么办法吗?
从理论上讲,我们可以将基础设施包 Y 的源代码包含到我们的项目 X 中(这两个项目都是 MIT 许可下的开源项目),但我更愿意使用或多或少的标准方法。
我们需要它的案例示例:
我们现在正在调查的案例:带有测试助手的 nuget 包,可确保 PDB 文件与源文件匹配(参考
Microsoft.DiaSymReader
包)。我们不希望我们所有的测试项目都引用Microsoft.DiaSymReader
程序集。或多或少是理论上的一个(目前不是问题,但如果项目将投入生产将是一个问题):使用 Roslyn 编译和运行脚本的自定义脚本引擎。我们不希望在将使用我们的脚本引擎的所有项目中都引用 Roslyn 程序集。
后一种情况更糟糕,因为我们不能将 roslyn 源代码合并到我们的项目中,显然,也不能将 roslyn 二进制文件作为我们包的一部分分发。
欢迎任何建议!