背景: 我有两个名为“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 src=*.dll" target="lib\net35" />
。如果我有一个这样的元素,它将所有 dll 复制到包中,它会导致实现此包的程序集引用 \net35 目录中的所有程序集。这不是我想做的。我希望只有“引用”中指定的程序集才会被实际引用,而所有其他程序集都将保留在展开的 \packages 文件夹中,并且应用程序可以工作,因为所有 dll 都位于同一目录中。可能我说的不对......
尝试 #2 添加为项目 的内容我们将它们检查到源代码控制中。这可以按我的意愿工作、编译和运行,但是,我真的不希望这些存储在项目的 \lib 文件夹中。
我正在寻找一个解决方案,其中项目获得对“A”的引用,并且仍然可以与位于同一位置但不直接引用的其他所需程序集一起运行。看起来尝试 #1 是正确的路径,但可能存在错误?
仅供参考,我直接将其作为 NuGet 的问题输入,以查看团队也有答案。