在Subversion中存储ASP.NET网站的最佳实践?

Bli*_*ixt 6 svn asp.net

我目前正在开发一个ASP.NET项目,其中有多个开发人员使用Subversion进行代码分发,但坦白说它现在完全搞砸了.设置Subversion存储库的人员包括特定于其计算机的配置文件,bin\*目录以及其他此类内容.

我是一个必须检查这个存储库并让它在我的计算机上运行的人,我对此非常感到沮丧,因为我花了一段时间对它进行整理以使其完全编译.现在我正在考虑编写Subversion指南的文档,发送给我公司的技术负责人,这样我们就可以使流程标准化并避免出现这些问题.

我正在寻找的是指南的输入.这是他们的开始,希望我们可以从中做出一些好事:

应该设置文件结构以在构建输出目录之外检查第三方库(因为它们不会包含在存储库中.)此目录的名称应为"库".

Subversion中不应包含特定于机器的文件.因此,仅签入Web.config模板,该模板由开发人员自定义以适合其计算机.默认情况下,此行为包含在Visual Studio 2010中,并且各个配置文件(Web.Local.config)自动Web.config应用了template().但是本地配置文件仍然不应该包含在Subversion中,只要它适用于特定的机器.

解决方案和项目文件不得包含任何绝对路径.

应设置忽略列表.从...开始:

'
*.user
obj
'
Run Code Online (Sandbox Code Playgroud)

ASP.NET 2.0网站的示例文件结构,其中包含特定于网站和第三方库的类库:

'
/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.
'
Run Code Online (Sandbox Code Playgroud)

使用的另一种方法Web.config.template是包含Local.config文件Web.config,但这可能不太灵活.

使用Web应用程序项目而不是Web站点项目时,引用将存储在项目文件中而不是.refresh文件中,因此将忽略bin /文件夹.

有人可以看到上述建议中的错误吗?缺少什么?有没有人有关于忽略列表的建议?我刚刚开始时有几个条目.

Pet*_*ete 7

我认为你是一个很好的一步.但是为什么不对/ 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忽略那些在本地覆盖设置的其他文件.