为什么我在VS 2005中构建项目时,其中一个项目的GUID会改变?

6
对于我两个VS 2005 C++项目,在构建时,VS想要写入.sln文件。我有许多其他的VS 2005 C++项目,这种情况并不会发生。这是一个问题,因为我们的VS 2005安装与ClearCase源代码控制集成,当我们尝试通过批处理文件运行隔夜构建时,构建会暂停,因为显示了ClearCase检出对话框。
查看VS在.sln文件中所做的更改,它是在项目行上的第二个GUID。
构建之前:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InterCommClientB", "InterCommClientB.vcproj", "{A2AF232A-7F27-4340-81D5-8ABFD10994D2}"

构建完成后:

Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InterCommClientB", "InterCommClientB.vcproj", "{67BE85B7-3234-484E-88FB-4F0E42096583}"

任何帮助都将不胜感激。我刚开始使用VS 2005,因为我们最近才从VC++ 6.0迁移,所以如果我错过了一些明显的东西,请原谅。
我们正在运行安装了SP1的VS 2005专业版。
问候,
Greg。
3个回答

4
我遇到了类似的问题。看起来在将项目从早期版本的VS(如6或2003)转换为VS 2010时,VS没有向.vcxproj文件添加Project GUID。因此,当您打开包含此类项目的解决方案时,VS将重新创建GUID,更改.sln文件但不更改.vcxproj文件。因此,下一次打开这样的解决方案时,情况仍将是相同的,.sln文件可能会再次更改。

参见:http://connect.microsoft.com/VisualStudio/feedback/details/586258/missing-projectguid-in-vcxproj-files


我也见过这种情况。如果你有一个被两个解决方案使用的项目,并且其中一个解决方案还没有更新到当前的Visual Studio版本,则可能会创建一个新的GUID。 - the_mandrill

1

我猜想一下,但是看起来InterCommClientB项目(项目而不是项目中的文件)已经做了一些更改。当发生这种情况时,sln会被更新,在这种情况下只有项目GUID进行了更改。

我的最佳猜测是手动构建解决方案,然后检入更改以解决此问题。这样,sln文件在构建时就不会改变。

我第二个最佳猜测是您已经在计算机上进行了这些更改,并且它正常工作,但是您没有在进行夜间构建的计算机上获取最新版本。


0

这可能有点超出范围 - 但有时候当解决方案在 Visual Studio 中打开并被修改时,Visual Studio 会无法检入解决方案文件。尝试关闭 Visual Studio,然后再提交解决方案文件。

如果不是这个原因,可能还有其他机构导致解决方案文件需要更改其使用的 GUID。在一个实例中,我正在使用国家仪器的 .NET 工具,他们有一个许可证方案,每当我进行重建时就会触发这种操作(修改不必要的文件)。

请仔细查看生成的输出(在日志或输出窗口中)-您可能会在那里找到一些进一步的线索!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接