版本控制中的项目结构 - 特定于.NET

时间:2008-09-25 20:04:31

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

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


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

StackOverflowIsAwesome
    /trunk
        /bin
        /app_data
    /tags
    /branches

那么,是否有一种干净的方法可以始终如一地执行此操作,还是需要不断移动/修改文件和文件夹才能使其正常工作?

7 个答案:

答案 0 :(得分:1)

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

文件结构:

  • 解决方案文件夹(包含解决方案文件,构建脚本,可能更多?)
    • 项目文件夹
    • 项目文件夹2
    • 引用(包含解决方案的共享程序集)。

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

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

答案 1 :(得分:1)

另一种方式:

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中。

答案 2 :(得分:0)

如果您的TTB是常见的而不是每个项目,那么它没有任何问题。或者我错过了什么?

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

您需要对结构执行的一个重要方面是,可以轻松检索特定版本的所有文件。重要的是要尽可能简化。在subversion中,将根文件夹复制到标记分支更容易,然后记住为X项目重复相同的操作。

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

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

/tag

/core_library
   /branch
   /main

/business_logic
  /branch
  /main

/report_library
  /branch
  /main

/my_ui
  /branch
  /main

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

答案 5 :(得分:0)

对于较大的项目,我们通常在此处使用此格式:

/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下。

下面的独立项目属于他们自己的/项目根目录,但是在同一个存储库中。

答案 6 :(得分:-1)

我是这样做的:

  1. 在VS
  2. 中创建项目
  3. 将项目文件夹中的所有内容导入repos / projectname / trunk
  4. 添加repos / branches和repos / tags文件夹
  5. 这给了我一个存储库结构,如:

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

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