为什么vdproj中“检测到的依赖项”下的程序集的exclude属性不会持久存在?

时间:2011-11-08 01:12:00

标签: visual-studio-2010 vdproj

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

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

"Exclude" = "11:TRUE"

...我希望排除的每个组件都有一个。

所以看起来VS2010没有正确加载vdproj文件中的设置。我很神秘。有没有人有解决方法?

2 个答案:

答案 0 :(得分:4)

这是因为依赖性分析器在将“复制本地”属性设置为true时始终将DLL添加到部署项目中。在MSDN文章Troubleshooting Setup and Deployment Projects中,请参阅“重新打开解决方案时再次包含以前排除的文件”一节。您必须选择使用Visual Studio的Copy Local和使用部署项目在正确的位置安装文件,尤其是在复杂的解决方案中。

答案 1 :(得分:1)

这适用于所有来这里寻找解决方案的人!

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

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

enter image description here

还记得设置你要部署文件的位置,在我的情况下,它会转到BIn文件夹。

enter image description here

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