我们如何才能使 .NET 项目的构建过程(Dev Studio 2005)完全独立于运行它的特定机器上的 GAC 上安装的内容。
这是我们要解决的问题:根据碰巧安装到 GAC 中的程序集,我们的构建过程会在输出目录中生成不同的 .NET 程序集,然后我们使用这些程序集来构建 .MSI
大概这是因为开发工作室假设,因为它安装在 GAC 中,所以它不应该作为我们产品的一部分安装。
我们希望禁用此行为,以便将项目直接或间接引用的所有 .NET 程序集复制到项目的输出目录中(.NET 2.0 运行时标准程序集除外)。
对于直接程序集引用,我知道设置“Copy Local=True”可以做到这一点。
但是,这不适用于间接程序集引用。
即,我们的一个项目引用了一个名为“A.dll”的程序集,该程序集依赖于另一个名为“B.dll”的程序集,该程序集与“A.dll”位于同一目录中。在 GAC 中未安装“B.dll”的机器上,A.dll 和 B.dll 都将复制到 Dev studio 构建过程中的输出目录中。这就是我们想要的。
但是在将 B.dll 安装到 GAC 的机器上,即使 A.dll 的“Copy Local = True”,B.dll 也不会被复制到输出目录中。