4

我有一个简单的问题。我想在我的安装项目中排除一些 dll 依赖项(在检测到的依赖项文件夹中),这样它们就不会被复制到用户安装文件夹中。我通过在我不想要的程序集上将“排除”属性设置为 true 来解决它,然后构建 msi 文件。它工作正常,程序集被排除在外。

但是,如果我关闭 Visual Studio 并重新加载它,则只有一个“排除”属性(在我设置的情况下为 4 个)保持设置为 true。我检查了 vdproj 文件,其中有 4 行,如下所示:

"Exclude" = "11:TRUE"

...一个我想要排除的每个程序集。

所以看起来 VS2010 没有从 vdproj 文件中正确加载设置。我很迷惑。有人有解决方法吗?

4

2 回答 2

4

这是因为依赖项分析器总是在其 Copy Local 属性设置为 true 时将 DLL 添加到部署项目中。请参阅 MSDN 文章“安装和部署项目疑难解答”中标题为“重新打开解决方案时再次包含以前排除的文件”的部分。您必须在使用 Visual Studio 的 Copy Local 和使用您的部署项目在正确的位置安装文件之间做出选择,尤其是在复杂的解决方案中。

于 2012-10-16T15:56:57.570 回答
1

这是为所有来这里寻找解决方案的人准备的!

好吧,我遇到了与上面提到的相同的问题,但是我想避免的 DLL 是检测到的依赖(我的项目 A 依赖于 B.dll,它依赖于 C.Dll(2.0.0.0))但我不想要 C .dll(2.0.0.0) 在我的 MSI 中(因为我直接依赖于另一个版本的 C.dll (1.0.0.0))。我试图排除 DLL,但这不起作用,因为每次我重新加载项目并添加检测到的依赖项时,VDProj 都会刷新依赖项。

Microsoft 的解决方案是将引用的 DLL 的“CopyLocal”属性设置为 false,我有很多这些 DLL,我不想去每个项目并更新它(因为这会导致测试工作飞速发展因为根据测试人员实际上正在更改许多项目的代码)。所以我通过手动将特定的 DLL (C.Dll (1.0.0.0)) 添加到安装项目来解决这个问题。只需右键单击安装项目并选择添加文件。

在此处输入图像描述

还记得设置您希望将文件部署到的位置,在我的情况下,它将转到 BIn 文件夹。

在此处输入图像描述

该文件将覆盖所有其他检测到的依赖项(具有相似名称)并部署到我们指定的位置。

于 2013-11-13T15:31:17.503 回答