[英]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.