背景:我有两个名为“A”和“B”的程序集。 “”A“引用”B“。”A“也引用一些额外的dll(Microsoft.Enterprise Library.Data和Microsoft Enterprise Library.Common),我认为它应该打包在nupkg中。NuGet包装和引用DLL的
我相信我的nupkg包应该包含来自“A”,“B”和两个“Microsoft Enterprise”程序集的程序集输出,这样当有人安装我的程序包时,它将直接引用程序集“A”,其他三个程序集将可用但不能直接引用,从而使他们的应用程序将运行什么是包装不引用的DLL的正确方法
尝试#1:?包装所有需要的DLL在\ net35文件夹 按照NuGet documentation regarding the "references"元素“如果省略了该元素,那么通常的行为将适用,即引用lib文件夹中的每个程序集。”
因此,我假设通过使用此元素它将只包含指定为引用的程序集。如果我也使用“文件”元素<file src=*.dll" target="lib\net35" />
,这似乎不是这种情况。如果我有一个像这样的元素将所有dll复制到包中,它会导致实现此包的程序集引用\ net35目录中的所有程序集。这不是我想要做的。我期望一些魔法,只有在“引用”中指定的程序集才会被实际引用,其他所有程序都将保留在展开的\ packages文件夹中,并且该应用程序可以工作,因为所有的dll都位于相同的目录中。也许我是不正确....
尝试#2添加的内容时,该包装在创建\ lib文件夹项目 如果我把未被引用的组件到\内容\ lib中,而不是LIB \ net35项目并直接将\ content \ lib dll转储到该项目中,然后强制我们将它们检入到源代码控制中。这工作,编译和运行,但我真的不希望这些存储在项目的\ lib文件夹中。
我正在寻找一个解决方案,其中项目获得对“A”的引用,并且仍然可以与其他所需的程序集共同运行但不直接引用。似乎尝试#1是正确的道路,但也许有一个错误?
仅供参考,我直接进入这个as a issue with NuGet看到它的团队也有一个答案。
这是NuGet 2.1中引入的一个回归/错误,他们已经纠正了这个问题,它将在本月的2.2版中得到修复。 – Jay