繁体   English   中英

Visual Studio不断更改project.sln文件

[英]Visual Studio keeps changing project.sln file

我在Visual C ++项目的团队中工作。 根据我们的建议,我们使用SCM跟踪项目的.sln文件。 事实证明,每次我从我的伙伴那里取消(是的,我们使用git)并在VS中打开解决方案,都会更新.sln文件。 正在更新的部分是在以下段中多次出现的长ID(在本例中以7C44结尾):

    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Debug|Win32.ActiveCfg = Debug|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Debug|Win32.Build.0 = Debug|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.DebugStaticCRT|Win32.ActiveCfg = DebugStaticCRT|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.DebugStaticCRT|Win32.Build.0 = DebugStaticCRT|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Release|Win32.ActiveCfg = Release|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Release|Win32.Build.0 = Release|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.ReleaseStaticCRT|Win32.ActiveCfg = ReleaseStaticCRT|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.ReleaseStaticCRT|Win32.Build.0 = ReleaseStaticCRT|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Template|Win32.ActiveCfg = Template|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Template|Win32.Build.0 = Template|Win32

这个数字是什么意思? 我们怎样才能让它在我们之间停止变化?

在搜索答案时,我很难找到这篇特别的帖子,所以我只想添加一些关键词和解释,以便更容易找到。 感谢Daniel和tgb的精彩回答,我能够解决这个问题,我的团队和我在打开Visual Studio 2010后不再有冲突的解决方案文件(我会投票给他们的答案,但我今天刚加入,还没有足够的声誉点投票答案...)。

因此,以更多方式提出问题: 为什么Visual Studio在打开解决方案时会更改.sln文件 为什么.sln文件有本地修改? 什么原因导致Visual Studio解决方案文件中的合并冲突?

答:.vcxproj项目文件中很可能不同或缺少ProjectGuid属性将导致本地修改。 这可能是由于从以前版本的Visual Studio升级项目,或者仅仅是手动复制项目文件和编辑部分项目。

修复是添加行:

<ProjectGuid>{###}</ProjectGuid>

(使用解决方案文件中的相应ID代替###)到'PropertyGroup Label =“Globals”'节点中的.vcxproj文件,例如:

  <PropertyGroup Label="Globals">
    <ProjectGuid>{FD0675C0-EC06-E665-4001-12DEE6694605}</ProjectGuid>
    <RootNamespace>MyProject</RootNamespace>
  </PropertyGroup>

否则,Visual Studio将为每个项目分配一个新的随机ProjectGuid并更新.sln文件。 可以在.sln文件中轻松找到给定项目的'ProjectGuid':

Project("{<Filter#>}") = "MyProjName", "src\to\Proj.vcxproj", "{<ProjectGuid>}"

这是Visual Studio用于引用各个项目的GUID。 您将在.sln文件的顶部找到相同的GUID,其中定义/导入项目。

Visual Studio从相应的.csproj / .vbproj文件中读取GUID。 在那里你应该在顶部附近找到一个带有相应GUID的ProjectGuid属性。 如果您和您的伙伴在那里定义了不同的GUID,.sln也将更新。

我遇到了同样的问题。 我终于注意到它来自一个没有定义其GUID的vcxproj文件。 我手动在我的vcxproj文件中添加了这个GUID:

  <PropertyGroup Label="Globals">
    <ProjectGuid>{D3303AD3-B7E5-48F8-919C-18202ABAEF00}</ProjectGuid>
    <RootNamespace>MyProject</RootNamespace>
    <ProjectName>MyProject</ProjectName>
    <Keyword>MFCProj</Keyword>
  </PropertyGroup>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM