簡體   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