【问题标题】:Structure of projects in version control - .NET specific版本控制中的项目结构 - 特定于 .NET
【发布时间】:2008-09-25 20:04:30
【问题描述】:

这篇文章类似于this previously asked question.我很想将我的SVN存储库设置为TTB格式,但是在Visual Studio 2008(ASP.NET/VB.NET)中创建项目时,创建的结构往往不兼容在考虑解决方案文件、项目文件、项目文件夹、解决方案中的多个项目等时。有没有人有脚本或程序可以将新创建​​的 ASP.NET 项目尽可能轻松地转换为 TTB 格式?


让我更具体一点。假设我正在创建一个名为 StackOverflowIsAwesome 的项目。我可以将它放入我的本地文件夹结构中(假设它是 c:\working)。当我创建它时,VS 会创建 c:\working\StackOverflowIsAwesome 和一大堆子文件夹(bin、app_data 等)。但我希望我的存储库结构看起来像......

StackOverflow 真棒 /树干 /bin /应用程序数据 /标签 /分支机构

那么,有没有一种干净的方法可以始终如一地做到这一点,还是我需要不断地移动/修改文件和文件夹才能做到这一点?

【问题讨论】:

    标签: .net asp.net visual-studio svn


    【解决方案1】:

    我们采用了一种非常简单的方法:

    文件结构:

    • 解决方案文件夹(包含解决方案文件、构建脚本,也许还有更多?)
      • 项目文件夹
      • 项目文件夹 2
      • 参考(包含解决方案的共享程序集)。

    然后我们只需将整个解决方案文件夹的内容检查到我们的存储库中。我们为每个解决方案使用一个存储库。我不确定这是否是组织解决方案的最佳方式,但它对我们有用。

    此外,我们在最高级别进行分支,而不是每个项目。

    【讨论】:

    • 我们对解决方案规模的项目组做同样的事情。我们还有一些较小的单项目项目(例如公共库)。对于这些,每个项目都是一个 TTB(如果需要,解决方案文件可以包含在单身项目目录中)。
    【解决方案2】:

    另一种方式:

    StackOverflowIsAwesome
      /trunk
        /database
        /datafiles
        /documents
        /build
        /installer
        /lib 
            /External_DAL (external that points to shared library)
        /utilities
        /vendor
        /src
          /StackOverFlowIsAwesome
            /StackOverFlowIsAwesome.csprj
            /bin
            /...
          /StackOverFlowIsAwesomeTests
            /StackOverFlowIsAwesomeTests.csprj
            /bin
            /...
      /branches
      /tags
    

    这将适用于每个项目。由于我们使用的是构建脚本,因此我们不需要将解决方案文件存储在 SVN 中。

    【讨论】:

      【解决方案3】:

      如果您的 TTB 是通用的,而不是每个项目,则没有问题。还是我错过了什么?

      【讨论】:

        【解决方案4】:

        您可以查看此previous post 或此project。该项目创建一个 .NET 开发树结构(需要 .NET 3.5)。

        【讨论】:

          【解决方案5】:

          在处理组成 Visual Studio 解决方案的多个项目时,很难决定如何正确构建事物。

          您需要对结构进行处理的一个关键方面是使检索特定版本的所有文件变得容易。重要的是要尽可能简单。在颠覆中,将根文件夹复制到标签分支比记住对 X 项目重复相同的操作更容易。

          能够在主干线之外长时间工作也很重要。您也必须考虑到这一点。

          您可能会发现您的软件有许多自然组合在一起的组件。你可以这样做

          /tag
          
          /core_library
             /branch
             /main
          
          /business_logic
            /branch
            /main
          
          /report_library
            /branch
            /main
          
          /my_ui
            /branch
            /main
          

          没有简单的答案。你做什么真的取决于你的具体项目。如果一切仍然一团糟,那么也许你需要看看你的项目是如何设计的,看看是否可以改变它以提高理解。

          【讨论】:

            【解决方案6】:

            对于较大的项目,我们通常在这里使用这种格式:

            /Project
                /trunk
                   /lib/              # Binary imports here (not in svn)
            
                   /src               # Solution file here
                      /Libraries      # Library assemblies here
                         /StackOverflowIsAwesome.Common
            
                      /Products       # Delivered products here
                         /StackOverflowIsAwesome.Site
            
                      /Projects       # internal assemblies here
                         /StackOverflowIsAwesome.Tests
                /branches
                    /1.x
                /tags
                    /StackOverflowIsAwesome-1.0
            

            根据实际项目非源文件(文档等)有一个 主干根目录下的目录和额外的开发资源在 src 下。

            下的独立项目在自己的/Project根目录下,但在同一个仓库中。

            【讨论】:

              【解决方案7】:

              我是这样做的:

              1. 在VS中创建项目
              2. 将项目文件夹中的所有内容导入到 repos/projectname/trunk
              3. 添加 repos/branches 和 repos/tags 文件夹

              这给了我一个像这样的存储库结构:

              projectname
                  / trunk
                      /bin
                      /obj
                      /Properties
                      projectname.sln
                  /tags
                  /branches
              

              我可以将所有文件保留在文件系统中的默认位置。

              【讨论】:

                猜你喜欢
                • 2010-09-06
                • 2014-09-09
                • 1970-01-01
                • 1970-01-01
                • 2012-08-30
                • 2021-03-25
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多