我目前正在开发一个ASP.NET项目,其中有多个开发人员使用Subversion进行代码分发,但坦白说它现在完全搞砸了.设置Subversion存储库的人员包括特定于其计算机的配置文件,bin\*目录以及其他此类内容.
我是一个必须检查这个存储库并让它在我的计算机上运行的人,我对此非常感到沮丧,因为我花了一段时间对它进行整理以使其完全编译.现在我正在考虑编写Subversion指南的文档,发送给我公司的技术负责人,这样我们就可以使流程标准化并避免出现这些问题.
我正在寻找的是指南的输入.这是他们的开始,希望我们可以从中做出一些好事:
应该设置文件结构以在构建输出目录之外检查第三方库(因为它们不会包含在存储库中.)此目录的名称应为"库".
Subversion中不应包含特定于机器的文件.因此,仅签入Web.config模板,该模板由开发人员自定义以适合其计算机.默认情况下,此行为包含在Visual Studio 2010中,并且各个配置文件(
Web.Local.config)自动Web.config应用了template().但是本地配置文件仍然不应该包含在Subversion中,只要它适用于特定的机器.解决方案和项目文件不得包含任何绝对路径.
应设置忽略列表.从...开始:
Run Code Online (Sandbox Code Playgroud)' *.user obj 'ASP.NET 2.0网站的示例文件结构,其中包含特定于网站和第三方库的类库:
Run Code Online (Sandbox Code Playgroud)' /trunk/ Libraries/ ThirdParty.dll MyClassLibrary/ bin/ [Ignore] obj/ [Ignore] Properties/ AssemblyInfo.cs SomeClass.cs MyClassLibrary.csproj - Holds references to third-party libraries. For example: ../Libraries/ThirdParty.dll MyWebApplication/ bin/ ThirdParty.dll [Ignore; copied by build process] ThirdParty.dll.refresh - Contains "../Libraries/ThirdParty.dll" Default.aspx Default.aspx.cs Web.config [Ignore] Web.config.template MySolution.sln - Holds list of projects. - Has reference information for projects. '使用的另一种方法
Web.config.template是包含Local.config文件Web.config,但这可能不太灵活.使用Web应用程序项目而不是Web站点项目时,引用将存储在项目文件中而不是.refresh文件中,因此将忽略bin /文件夹.
有人可以看到上述建议中的错误吗?缺少什么?有没有人有关于忽略列表的建议?我刚刚开始时有几个条目.
我认为你是一个很好的一步.但是为什么不对/ MyWebApplication中的整个bin文件夹而不是文件进行忽略?您不会将构建输出添加到subversion中吗?我肯定会认为这是一种不好的做法.
此外,如果可能,您可以将web.config文件添加到subversion,但在元素中引用带有appSettings的新文件:例如
<appSettings file="local.config">
Run Code Online (Sandbox Code Playgroud)
然后让svn忽略local.config文件.这就是我经常运作的方式.
但是当然只有每个可配置参数都在appSettings中才有效(这是我不喜欢提供者模型的原因之一,因为所有提供者都需要从connectionString元素获取连接字符串,并且你不能重新配置它们以获取连接字符串来自appSettings)
编辑:troethom启发我并指出,您还可以在单独的文件中覆盖connectionString配置设置
<connectionStrings configSource="ConnectionStrings.config"/>.
Run Code Online (Sandbox Code Playgroud)
所以我要做的是将实际的web.config文件放在subversion控件下,但是让svn忽略那些在本地覆盖设置的其他文件.
| 归档时间: |
|
| 查看次数: |
4918 次 |
| 最近记录: |