首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非传递包依赖?

非传递包依赖?
EN

Stack Overflow用户
提问于 2016-11-15 17:58:03
回答 2查看 348关注 0票数 1

我有一个包X,取决于另一个包Y。默认情况下(Visual 2015 Upd3 +Nuget3.5),引用包X的任何项目也将参照包Y更新。问题是,X的客户根本不需要引用Y,因为包Y的API不是也不应该暴露给客户。

因此,预期的行为如下:在添加了对包X的引用之后,包Y的内容应该在构建时复制到输出文件夹中,但是包Y不应该添加到项目引用中。

有什么办法吗?

理论上,我们可以将基础设施包Y的来源包含到我们的项目X中(这两个项目都是MIT许可下的开源项目),但我更喜欢使用或多或少的标准方法。

我们需要它的例子:

  • 我们现在正在调查的案例: nuget包和测试助手,它确保PDB文件与源匹配(引用Microsoft.DiaSymReader包)。我们不希望我们的所有测试项目引用Microsoft.DiaSymReader程序集。
  • 多多少少的理论问题(目前不是问题,但如果项目将被推入生产中将是一个问题):使用Roslyn编译和运行脚本的自定义脚本引擎。我们不希望在所有使用我们的脚本引擎的项目中引用Roslyn程序集。

后一种情况要糟糕得多,因为我们显然不能将roslyn源合并到我们的项目中,而且也不能将roslyn二进制文件作为包的一部分分发。

欢迎任何建议!

EN

Stack Overflow用户

发布于 2016-11-16 07:13:19

您可以将包Y的dll作为内容文件添加到包X中,这不会将Y dll添加到安装了X包的项目中。

下面的步骤显示了如何使用Y dll作为内容文件创建包X。

  1. 通过添加->现有项将Y dll添加到Package项目中。
  2. 选择all并右击打开“属性”窗口,将“复制到输出目录”设置为“始终复制”。
  3. 用nuget.exe将项目X打包为X包

现在,当您使用X.nupkg打开包NuGet包资源管理器文件时,您将发现Y dll存储在内容文件夹中。当您在其他项目上安装包X时,Y dll将作为内容文件添加到项目中。生成项目后,Y dll将被复制到输出目录中。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40616611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档