4

我们有一个解决方案文件,其中包含适用于多个平台的多个应用程序。在开发用户故事时,可以选择 10 个项目作为默认启动项目。不幸的是,StartupItem 存储在 sln 文件中,因此会导致我们的版本控制系统中出现不希望的合并(或更糟糕的是:冲突)。据我了解,Visual Studio 有一个 .suo 文件来为每个用户存储这些类型的设置。

为什么 Xamarin Studio 将 StartupItem 存储在 sln 文件中?是否支持 suo 文件?或者这个提交乒乓球还有其他解决方法吗?

4

3 回答 3

3

如果您使用 Git 作为版本控制系统,您可以轻松地为特定文件定义过滤器,如本答案所示:

  1. *.sln filter=startupitem在本地文件中定义新过滤器.gitattributes或在.git/info/attributes.
  2. git config filter.startupitem.clean "sed '/StartupItem\ =\ .*.csproj/'d"通过命令行定义此过滤器的行为。(您也可以使用该--global选项。)

Git 仍会将解决方案文件列为未提交的更改。但是当文件添加到阶段时,过滤器被应用并且该行消失了。

结帐后,此行丢失,Xamarin 设置了一些默认启动项目。从现在开始,您可以切换项目而无需签入您的选择。Xamarin 只会在本地将该行添加回*.sln文件。

于 2014-08-03T22:44:43.037 回答
1

请注意 - Xamarin 已在 5.7 版中修复了此问题:

http://developer.xamarin.com/releases/studio/xamarin.studio_5.7/xamarin.studio_5.7/

来自发行说明:“启动项目名称现在存储在用户解决方案设置文件中,而不是 .sln 文件中。”

所以 >= v 5.7 不需要过滤器或任何特殊的东西。

于 2014-12-22T19:55:49.040 回答
0

一种解决方案是在您签入时逐个查看对文件的更改。因此,除非添加了新项目,否则不应签入解决方案文件。

我们在工作中所做的下一个级别是使用 premake 构建解决方案文件。因此,我们不再签入 .sln 或 .vcproj 文件,因为它们是在签出后自动构建的。这个解决方案是为了解决项目文件变化很大,所以e开发中心没有听从“检查你的变化”的第一条规则

于 2014-07-10T06:35:33.780 回答