2011-03-01 63 views
5

我有一个Web应用程序的Visual Studio 2010解决方案,它包含组成Web应用程序的所有项目,以及构建安装程序的.vdproj文件。所有文件都在配置管理下。如何防止在每次编译时更新PackageCode的.vdproj编译?

每当我编译这个解决方案时,在任何源代码中都没有任何更改,Visual Studio将检出.vdproj文件并进行更改。 PackageCode至少会被更改为一个不同的GUID。在其他时间,除了更新PackageCode之外,它还会更改.vdproj文件的“DeployProject”部分中的Hierarchy的顺序。

这不会发生在我们其他的.vdproj文件中。使得.vdproj独一无二的一件事是,除了包含来自解决方案中其他项目的主要输出之外,它还包含超过50个不是来自Visual Studio项目的额外的.iso,.kml,.jpg文件。这些可能导致PackageCode以某种方式改变?

回答

1

每次“释放”msi时应更改软件包代码,请参见http://msdn.microsoft.com/en-us/library/Aa370568。由于VS不知道你是否会分发这个msi,它会播放安全并修改软件包代码。

Visual Studio应该能够结合源代码控制来处理这个问题,而且你很幸运能够为你做到这一点(在某种程度上,显然)。 Visual Studio 2010 SP1出现问题,请参阅http://connect.microsoft.com/VisualStudio/feedback/details/650587/vs-2010-sp1-changes-packagecode-in-vdproj-on-each-build-but-fails-as-source-controlled

+0

谢谢你的回应。很高兴听到其他人向MS报告这个错误。作为一种解决方法,我们决定将文件签出以避免问题。 – kcrossBAE 2011-03-22 14:45:01

+0

这似乎仍然是有问题的,因为IDE不断为每次运行编译和打包整个解决方案! – 2011-03-31 13:46:42

1

这是在安装VS2010 SP1并使用安装项目(.vbproj)构建解决方案后搜索无限对话消息时第一个有用的谷歌搜索。这已由MS修复。我发布了一个更直接的修补程序下载链接。

A hotfix for SP1 has been made available

http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=35848

阅读该修补程序的链接,因为你还是要修改项目属性,因此默认生成操作不会尝试改变构造每个产品代码(见修补程序添加的项目属性: BackwardCompatibleIDGeneration)。

+0

不幸的是,此修补程序没有解决我们的问题。我们的CM系统仍然坚持检查文件,这表明ProductCode仍在更新中。 – kcrossBAE 2011-06-02 19:39:09

+1

@kcrossBAE是否将安装项目的BackwardCompatibleIDGeneration设置为True?构建系统将继续使用新行为,直到在vbproj中设置此属性。 – yzorg 2011-06-02 22:55:14