背景:我有两个组件称为“A”和“B”。 “” A”引用‘B’,‘A’还引用了一些额外的DLL(Microsoft.Enterprise Library.Data和微软企业Library.Common),我认为应该在nupkg包装。
我相信我的nupkg包装应包含“A”,“B”输出组件和两个“微软企业”组件,这样,当用户安装完我的包,它将给他们一个直接引用大会“A”和其他三个组件将可(但不直接引用,使他们的应用程序将运行。什么是包装不引用的DLL的正确方法是什么?
尝试#1:包装所有需要的DLL在\ net35文件夹按照有关“参考”的NuGet文档 “如果省略此元素,那么通常的行为适用,这是引用的每个组件的lib文件夹”元素
所以,我认为用这个元素将只包含指定为引用组件。 这似乎不是,如果我还使用了“文件”元素的情况下<file src=*.dll" target="lib\net35" />
如果我有一个这样的元素,所有副本的DLL来包装它结果在实现这个包引用所有的组件在\ net35目录装配。这不是我想做的事情。我预计,在“引用”指定的唯一装配一些神奇的将是一个实际的被引用和所有其他人则留在爆炸\包文件夹,因为所有的DLL位于同一目录中的应用是可行的。也许我是不正确....
尝试#2添加的内容项目,如果我把未被引用的组件到\内容\ lib中,而不是的lib \ net35当包装这会在项目中的\ lib文件夹,并直接转储\内容\ lib中的dll到该项目,然后强制我们检查他们到源代码控制。 这个工程,编译和运行,因为我想,但我真的不希望这些存储在项目的\ lib文件夹。
我要寻找一个解决方案,该项目得到引用到“A”,仍然可以与运行其他所需的组件位于同一地点,但不直接引用。 这似乎是尝试#1是正确的路径,但也许有一个bug?
仅供参考,我进入了这个与一的NuGet问题直接看到它的那支球队有一个答案为好。