【发布时间】:2018-06-14 08:23:41
【问题描述】:
我有:
- A.dll - 第三方程序集
- B.dll - 我自己的类库程序集
- C.exe - 我自己的可执行文件
我正在使用Costura.Fody NuGet package 将 A.dll 嵌入到 B.dll 中,并且 C.exe 具有对B.dll。
(A.dll 嵌入到 B.dll 中)
然而,当我构建 C.exe 时,A.dll 出现在输出文件夹中,尽管它已经嵌入到 B.dll(也被复制到输出文件夹)中。我不希望将本质上是两个 A.dll 副本与我的可执行文件一起分发,但我想将 A & B 作为一个分发。
在 B.dll 中,A.dll 的“复制本地”属性设置为 false,而是明确包含在 Costura 的 FodyWeavers.xml 中。
有什么方法可以配置 Costura.Fody 和/或我的引用属性,以便 A.dll 不会被独立复制到 C.exe 的输出文件夹中,而 B.dll(带有对 A.dll 的嵌入式引用)是抄袭?
【问题讨论】:
-
看看here.
-
Copy Local = False 本身应该足以防止 A.dll 被复制到 B 构建目录。这反过来又阻止了 msbuild 在构建 C 时找到 A。它根本不应该寻找它,因为 A 不应再出现在 B 的清单中。这里出了不止一件事。您至少必须深入挖掘详细的 msbuild 跟踪,以了解它是如何设法找到它的。或者只是不打扰机器,唯一重要的是您部署到用户或生产机器的内容。
-
感谢 Hans 将我推荐给 msbuild 跟踪。 Msbuild 在 Program Files 中找到 A 是因为我很久以前就将它复制到那里了。
标签: c# dll reference visual-studio-2017 fody-costura