当我使用最新的Monodevelop和VS 2012 RC共享代码时,遇到了问题。

10

当使用最新的Monodevelop和VS 2012 RC共享代码时,我可以在运行MonoDevelop的Mac和运行最新的VS 2012 beta的Windows 7 PC之间加载并使用.sln解决方案文件、.csproj项目文件和所有代码文件。源代码存储在这些机器之间的共享文件夹内。

这个方法非常有效...但是在某个阶段,当我尝试在Mac上的MonoDevelop下重新加载解决方案项目时,MonoDevelop会认为解决方案文件.sln是一个十六进制文件,并以窗口形式加载和显示它的十六进制码。它不再认为它是一个解决方案文件了!

我注意到文件的行终止符是0D 0A,这对于PC是正确的。我知道Mac仅使用0D(如...)作为行终止符,但最初它就是这样工作的。内容看起来对我来说没问题!

如果我在Mac MonoDevelop上创建一个新的解决方案,然后将现有的.csproj文件放到其中,那么它就能正常工作。直到出问题...

有什么想法吗?


这个问题是在Visual Studio 2010中已经发生过了,还是只出现在VS 2012中的新问题? - Betaminos
我想在2012年之前就看过它...但这是我第一次愤怒地做这件事。 - AnthonyLambert
1个回答

20
问题是,VS SLN文件现在的开头是:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2010

它们需要以以下方式开始:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010

我向 Xamarin 报告了此问题,他们已经发布了一个补丁 - https://bugzilla.xamarin.com/show_bug.cgi?id=4919

或者,您可以手动修改文件 - 这就是我的做法。


2
我一直保留着 sln/csproj 文件的两个副本(一个在 Mac 上,一个在 Windows 上),并且只使用源代码控制在两台机器上进行检出。我认为这通常是一个更好的想法,因为存在这些问题。 - jonathanpeppers

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