Version control Xamarin解决方案的哪些部分应该保留在存储库之外?

Version control Xamarin解决方案的哪些部分应该保留在存储库之外?,version-control,mercurial,xamarin.android,xamarin,dvcs,Version Control,Mercurial,Xamarin.android,Xamarin,Dvcs,我正在与一名设计师合作开发Xamarin.Android应用程序,我们在保持同步方面遇到了问题。我们使用Mercurial,但我的问题应该与Git或任何其他DVC相关。我的.hgignore文件如下所示: ^bin/ ^obj/ ^Components/ \.keystore$ 我不确定这些文件: ^Resources/Resource.designer.cs \.sln$ \.userprefs$ \.csproj$ 谢谢 更新 找到了这个确认排除了*.pidb和 *.userprefs和

我正在与一名设计师合作开发Xamarin.Android应用程序,我们在保持同步方面遇到了问题。我们使用Mercurial,但我的问题应该与Git或任何其他DVC相关。我的.hgignore文件如下所示:

^bin/
^obj/
^Components/
\.keystore$
我不确定这些文件:

^Resources/Resource.designer.cs
\.sln$
\.userprefs$
\.csproj$
谢谢

更新
找到了这个确认排除了*.pidb和 *.userprefs和暗示确认包括*.sln和*.csproj
见:

我不赞成包含Resource.designer.cs文件。它在资源更改后自动重新生成,并包含以下通知:

// ------------------------------------------------------------------------------
//  <autogenerated>
//      This code was generated by a tool.
//      Mono Runtime Version: 4.0.30319.17020
// 
//      Changes to this file may cause incorrect behavior and will be lost if 
//      the code is regenerated.
//  </autogenerated>
// ------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//  
//这段代码是由一个工具生成的。
//Mono运行时版本:4.0.30319.17020
// 
//对此文件的更改可能会导致不正确的行为,如果
//重新生成代码。
//  
// ------------------------------------------------------------------------------

通过合并,您可以拒绝布局文件中的id名称更改,但接受包含新名称的文件。

这与my.gitignore文件的外观非常相似:

*.pidb
*.userprefs
bin
obj
.DS_Store
*.suo

一般来说,这些是您不需要的文件(因此您确实需要其余的文件)。

要回答您的问题,您想知道:

^Resources/Resource.designer.cs
\.sln$
\.userprefs$
\.csproj$
绝对不能忽略
Resource.designer.cs
文件。当然,在某些情况下它会被重新生成,特别是当您更改生成它的resx文件时,但是只要将它提交到版本控制,其他人就不必重新生成它了

.sln
.csproj
文件绝对不应被忽略。解决方案文件包含哪些项目是解决方案的一部分,csproj文件包含项目信息,您肯定需要提交这两个信息

.userprefs
但是,它是一个本地文件,它包含使用机器的用户的用户首选项,您不希望在版本控制中使用它

这是我自己的Xamarin ignore文件,注释如下:

syntax: glob
_ReSharper.*/
[Bb]in/
[Oo]bj/
*.user
*.userprefs
*.suo
.DS_Store
第一行告诉Mercurial使用glob库来处理文件掩码

下一行忽略ReSharper临时文件,这些临时文件根据项目或解决方案名称添加到它们自己的子目录中。请注意,您可以要求ReSharper为此使用计算机上的临时文件夹,而不是将其存储在解决方案目录中,但这可能是每个用户的设置,因此为了确保这些文件夹不会意外提交,请忽略该文件夹

然后我忽略bin和obj文件夹,处理大写和小写的第一个字母,即bin和bin都被忽略

然后我忽略扩展user、userprefs和suo的所有内容,因为所有这些都存储本地用户首选项

最后一项忽略Mac资源文件夹

如果您有NCrunch、TeamCity或FinalBuilder,则可能需要添加其他条目:

_NCrunch_*/
_TeamCity.*/
*.fb7lck
*.fbl7
*.fbpInf

感谢您提醒Mac用户使用.DS_Store、.suo的Visual Studio用户和.pidb的Monodevelop用户,我还发现这是为了确认排除.suo,您绝对不应该忽略.csproj、.sln和该资源文件。userprefs,当然,但是其余的,不可能!谢谢你,姑娘!请看我的更新。如果你加上这个答案,再扩展一点,这可能是这个问题的最佳答案。太棒了!非常感谢。你为什么说资源设计器文件绝对不应该被忽略,然后继续说它只是为了方便,而不是给团队其他成员带来任何致命错误。基本上,你是说它应该被提交,这样其他团队就不必再做另一个构建了?这听起来并不是我绝对不应该忽视的。这个gitignore示例对于基于Xamarin的VisualStudio2015项目非常有用。我还将其用于Xamarin Studio项目。应提供信息,因为Xamarin包含在VS 2015中。我不同意忽略resource.designer文件,它会不断导致合并冲突,并且不会保存任何工作,因为当您从源代码管理中提取应用程序时,仍然需要构建和运行该应用程序,并且在构建时会重新生成该文件,在源代码管理中保存该文件会给团队成员带来什么好处?