VS2012和VS2013争夺.sln标头

时间:2014-03-12 13:16:25

标签: git visual-studio-2012 visual-studio-2013 solution

我正在开发Visual Studio 2012和2013年的另一位开发人员。当我们在git上共享代码时,每个Visual Studio版本都会根据自己的喜好更改.sln标头。几乎每次提交我们都会得到这样的变化:

@@ -1,8 +1,6 @@
 <U+FEFF>
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.30110.0
-MinimumVisualStudioVersion = 10.0.40219.1
+# Visual Studio 2012

有没有办法避免这种情况,除了手动检查.sln的更改,只提交相关的提交?

请注意,将解决方案文件添加到.gitignore是一个坏主意,因为有效的更改并不常见。

1 个答案:

答案 0 :(得分:1)

我要继续回答,只是总结一下我对这个主题的一些知识。在某种程度上,我认为这是一个未解决的问题。标准答案是不要将二进制文件和元数据检查到VCS&#34;,但有时现实是您需要共享一些IDE /编译配置信息,但您需要支持多个编译器/操作系统/版本/等

显然,.gitignore对于真正依赖于用户或编译器生成的任何内容都很有用。你可以自己找出最容易忽略的最佳项目,或者你可以仔细阅读不同编译器和IDE的许多lists available online

但是,某些文件是必需的,但仍取决于从用户到用户或机器之间的因素。根据我的经验,Visual Studio C项目的.vcxproj文件一直是违法者。问题是VS2010和VS2012想要使用PlatformToolset的不同版本。解决方案是使用条件语句:

<PlatformToolset Condition="'$(VisualStudioVersion)' == '10.0'">v100</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '11.0'">v110</PlatformToolset>

我不认为这个想法会在你的具体案例中起作用,但它可能会在很多方面起作用。对于你的情况,我认为你必须决定&#34;规范&#34;版本将是(即选择一个默认的编译器/ IDE /版本/机器/无论如何),然后任何偏离它的情况将需要避免检查冲突的部分。最简单的方法是在所有更改中使用git add -p,或者仅对已知存在问题的文件使用git stash。只添加对每个人都有用的部分,其余部分,如果它们妨碍了一些变形,你可以git checkout -- <filename>或{{1}}之后使用{{1}}。我承诺了重要的部分。

这个问题(或至少非常类似的问题)也被提出here,但在撰写本文时,答案并不是很有帮助。 This也可能有一些相关的讨论,但同样,与您的问题相关的真正解决方案有些缺乏。