我有一个包含20多个子项目的Visual Studio 2005 .NET解决方案,其中包括一个部署项目。VS2005 .NET部署项目有许多检测到的依赖项,已经手动排除并添加了手动更正的值。
然而,有时这些检测到的依赖关系会神奇地被取消排除,从而触发构建警告: 警告:两个或多个对象具有相同的目标位置(“[targetdir] \”)
是什么导致检测到的依赖关系被取消排除?可以将部署解决方案的警告视为错误,以便夜间构建不会继续吗?
我有一个包含20多个子项目的Visual Studio 2005 .NET解决方案,其中包括一个部署项目。VS2005 .NET部署项目有许多检测到的依赖项,已经手动排除并添加了手动更正的值。
然而,有时这些检测到的依赖关系会神奇地被取消排除,从而触发构建警告: 警告:两个或多个对象具有相同的目标位置(“[targetdir] \”)
是什么导致检测到的依赖关系被取消排除?可以将部署解决方案的警告视为错误,以便夜间构建不会继续吗?
当依赖项目在依赖的 DLL 上设置了 "Copy Local" 时,就会发生这种情况。部署/安装项目将源和 DLL 的副本都列为依赖项。
我曾经遇到过同样的问题,并在放弃一年后转向WiX。 问题还在于我必须“双重构建”我的构建,因为VS2005的MSBuild无法与部署项目配合使用。
无论如何,您可能希望考虑使用WiX进行安装。
好的,这更像是一个黑客而不是其他什么 :)
通常在Visual Studio下有两个选项:
a)排除重复的DLL
或者
b)将您的重复DLL的条件属性设置为不同的值。
问题是,使用这两种方法,您仍然会发现它们被神奇地重置,并像以前一样收到警告。
对我们有效的解决方案如下:
a)转到设置项目并创建一个自定义文件夹
b)将自定义文件夹的DefaultLocation属性设置为与需要放置这些DLL的位置相同。例如,对于ASP.NET应用程序,该值为[TARGETDIR] \ bin
c)然后将所有重复的dll拖放到此文件夹中,现在您应该不会收到任何警告了。
就是这样。如果您有任何额外的dll,请将它们拖放到此文件夹中,您应该不会收到有关这些dll的警告。
希望这可以帮助到您。
-Konstantinos