【问题标题】:More on: Help Structuring VS2010 Solutions/Projects and TFS2010更多信息:帮助构建 VS2010 解决方案/项目和 TFS2010
【发布时间】:2011-02-22 20:31:48
【问题描述】:

这是我们上一篇文章(帮助构建 VS2010 解决方案/项目和 TFS2010)的后续文章。

关于如何构建我们的 VS2010 解决方案和项目以实现最佳组织,以及保存和使用 TFS2010,我们有几个问题。

目前,我们的代码结构如下:

/OverallAppName  
OverallAppName.sln  
-/Client  
-    -/WindowsFormsProject1  
WindowsFormsProject1.sln  
-    -/WindowsFormsProject2  
WindowsFormsProject2.sln  
-/Components  
-    -/ClassLibrary1 (common library referenced by other projects)  
ClassLibrary1.sln  
-    -/ClassLibrary2  
ClassLibrary2.sln  
-    -/ClassLibrary3  
ClassLibrary3.sln  
-    -/ClassLibrary4  
ClassLibrary4.sln  
-    -/ClassLibrary5  
ClassLibrary5.sln  
-/Server  
-    -/WindowsServiceProject1  
WindowsServiceProject1.sln  
-    -/WindowsServiceProject2  
    WindowsServiceProject2.sln  
-    -/WebProject1  
    WebProject1.sln  
-    -/WebProject2  
    WebProject2.sln  

因为,现在,我们正处于从 VSS 迁移到 TFS2010 的过程中,我们希望构建我们所有的解决方案/项目,使其最高效、最合乎逻辑、最容易维护、最容易参考和最简单要在 TFS2010 中使用和构建,我们需要一些关于使用分区解决方案模型构建所有内容的“最佳”方式的建议。

有什么建议吗??????我们如何将所有这些不同类型的 VS2010 项目构建成一个逻辑结构,使单独的组可以处理单个部分(而不是整个解决方案),我们仍然可以拥有项目引用,我们可以存储在 TFS2010 中并在那里构建和分支,并且遵循“推荐的最佳做法”?

谢谢。 (抱歉,我不确定格式是否很好。)

【问题讨论】:

  • 这看起来像是复制品,而不是后续产品。请说明为什么这不是一个重复的问题。
  • 第一篇文章询问了使用 Visual Studio Team Foundation Server 进行团队开发文档中提供的信息/示例。只是想了解微软的建议以及其他问题。这篇文章专门关于我们当前的代码库以及如何以“最佳”方式构建它。相似的主题,但不同。我不想把它全部放在一篇文章中,因为它会很长并且可能会令人困惑。这就是为什么这篇文章是后续文章的原因。
  • 这已经被问过了。 stackoverflow.com/questions/4465919/…
  • 我很难理解这与您之前的问题有何本质不同。当我说明显不同时,我的意思是我不明白为什么不能将两者结合起来。

标签: visual-studio-2010 projects-and-solutions structure


【解决方案1】:

虽然我很钦佩您将所有内容都作为一个大型解决方案的承诺,但我认为,如果坚持这一点,TFS 在自动化构建领域必须提供的一些最佳功能将遭到破坏。

我之所以这么说是因为您可以使用签入触发的构建来立即构建代码以证明其有效(或者更好的是,使用门控签入)。这些构建的有用性与它们运行的​​时间成反比。因此,如果您有一个需要 20 分钟构建的大型解决方案,那么它将失去这些构建类型的优势。但是,如果您有几个较小的解决方案,每个解决方案大约需要 5 分钟,那么您只能在签入时获得修改后的解决方案并更快地知道结果。

根据您上面列出的内容,我倾向于为每组可以单独发布的人工制品提供解决方案。在您的示例中,可能每个客户端一个,每个 Web 应用程序一个,所有公共库一个。

文件夹结构与上面的内容没有太大区别(假设我解释正确)

/OverallApplication
    /Clients
        /Client1
            -Client1.sln
            /Client1Project1
                -Client1Project1.csproj
            /Client1Project2
                -Client1Project1.csproj
            ...
         ...
    /Components
         -Components.sln
         /ClassLibrary1
             -ClassLibrary1.csproj
         /ClassLibrary2
             -ClassLibrary2.csproj
         ...
    /Server
        /WebApp1
            -WebApp1.sln
            /WebApp1Project1
                -WebApp1Project1.csproj
            /WebApp1Project2
                -WebApp1Project1.csproj
            ...
         ...     
    /CodeSigningKey
        -KeyPair.snk
    /ReferencedAssemblies
        /Manufacturer1
            -Manufacturer1Assembly1.dll
            ...
        ...

公共库仍然可以作为项目引用添加到服务器和客户端解决方案中。我为常见项目引入了一些新文件夹,例如代码签名密钥和引用的第 3 方程序集(例如企业库)。

除此之外,您还需要采用某种分支策略来将 Main、Dev 和 Release 代码分支分开。为此,我建议稍微阅读一下 Codeplex 上的 ALM Rangers 分支指南。 http://vsarbranchingguide.codeplex.com/releases

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 2021-05-25
    • 2012-03-28
    • 2011-05-08
    • 2012-02-18
    相关资源
    最近更新 更多