Jay*_*Jay 6 nuget nuget-package
背景: 我有两个名为"A"和"B"的组件.""A"引用"B"."A"还引用了一些我认为应该打包在nupkg中的附加dll(Microsoft.Enterprise Library.Data和Microsoft Enterprise Library.Common).
我相信我的nupkg软件包应包含"A","B"和两个"Microsoft Enterprise"程序集的程序集输出,这样当有人安装我的软件包时,它会直接引用程序集"A"和其他三个程序集将可用(但不能直接引用,以便它们的应用程序可以运行.打包非引用dll的正确方法是什么?
尝试#1:将所有必需的dll打包在\net35文件夹中 根据关于"references"元素的NuGet文档 "如果省略此元素,则通常的行为适用,即引用lib文件夹中的每个程序集."
因此,我假设通过使用此元素,它将仅包含指定为引用的程序集.如果我也使用"file"元素,情况似乎并非如此<file src=*.dll" target="lib\net35" />.如果我有一个这样的元素将所有dll复制到包中,它会导致实现此包的程序集引用\net35目录中的所有程序集.这不是我想要做的.我期待一些魔法,只有"引用"中指定的程序集才会被实际引用,而其他所有程序集将保留在爆炸的\ packages文件夹中,并且应用程序将起作用,因为所有dll都位于同一目录中.也许我不对......
尝试#2作为内容添加到项目中 如果我在打包时将未引用的程序集放入\ content\lib而不是lib \net35,则会在项目中创建一个\ lib文件夹,并直接将\ content\lib dll转储到该项目中,然后强制执行我们将它们检查为源代码控制.这可以工作,编译和运行,但我真的不希望这些存储在项目的\ lib文件夹中.
我正在寻找一个解决方案,其中项目获取对"A"的引用,并且仍然可以与其他所需的程序集共同运行,但不能直接引用.似乎尝试#1是正确的路径,但也许有一个错误?
仅供参考,我直接将此作为NuGet的一个问题进入,以确定该团队也有答案.