关于c#:如何设置.NET开发树?

关于c#:如何设置.NET开发树?

How do you set up your .NET development tree?

您如何设置.NET开发树? 我使用这样的结构:

1
2
3
4
5
6
7
8
9
10
-projectname
--config (where I put the configuration files)
--doc    (where I put all the document concerning the project: e-mails, documentation)
--tools  (all the tools I use: Nunit, Moq)
--lib    (all the libraries used by the solution: ninject or autofac)
--src
---app   (sourcefiles)
---test  (unittests)
solutionfile.sln
build.csproj

符号"-"标记目录。

我认为在这些内容上拥有良好的结构非常重要。 您应该能够从源代码管理系统中获取源代码,然后在不打开Visual Studio或安装任何第三方库的情况下构建解决方案。

有什么想法吗?


我们使用的布局与JP Boodhoo的博客文章"项目的目录结构"中所述的布局非常相似。


查看其他其他StackOverflow问题...

  • 版本控制中的项目结构
  • 最佳实践:协作环境,Bin目录,SVN


TreeSurgeon是一个工具,它将为您设置目录树,其中包含所有必需的依赖项和框架nant文件。在该链接上,您还可以找到其原始创建者Mike Roberts撰写的一系列博客文章,其中解释了TreeSurgeon为您提供的结构背后的一些故意选择,例如为什么可以在lib和工具之间进行复制,为什么必须存在所有依赖项,等等很重要。

我已经有一段时间没有使用它了,所以不记得我是否仍然同意它所做的所有选择,但是我认为您对此不会有错。


我们使用这样的结构:

  • CompanyNameOrCoreProjectName

      • 分店名称

        • CopyOfTrunk
    • 树干

      • 桌面
      • 引用的程序集
      • 共享
      • 解决方案
      • 测试

然后只需确保所有项目/解决方案文件仅使用相对路径并且分支工作良好即可。桌面/网站适用于各种类型的项目,测试适用于任何单元测试项目,Solutions文件夹为每个解决方案提供一个文件夹,其中仅包含解决方案文件。 ReferencedAssemblies包含我们未包含在解决方案中的所有程序集(有时有些本地项目我们每次都不希望每次构建解决方案时都希望构建,或者诸如Rhinomocks或log4net等第三方程序集。共享用于跨多个解决方案使用的任何核心库(数据访问,业务逻辑等)。


我们也使用TreeSurgeon,对此非常满意。我们的结构如下:

  • 建立
  • LIB
  • src

    • < 各种用于应用,测试,数据库迁移等的src目录)
  • 工具

树干

  • 同上

我在项目中没有工具。工具在网络共享中。是的,这些天磁盘空间很便宜,但是...来吧:)

另外,我在项目名称下有一个数据库脚本文件夹(当它是数据驱动的应用程序时)

当然,设置的方式无关紧要,但是使用合理的组织标准来适应项目并遵循良好的纪律这一事实。无论您是独奏还是团队合作,这都非常有用。


如果我正确地理解了您的结构,我认为您的开发树中将有许多与"工具"和"库"相关的重复项。这些极有可能是不同项目可能共享的外部工具和库。

最适合我们的是:

solutionfile.sln
-src
--projectname
---config
---doc
---source files (structure representing namespaces)
-test
--testprojectname (usually, a test project per source project)
---unit test files (structure mirroing the structure in the source project)
-lib
--libraryname (containing the libraries)
-tools


在我的工作场所,我们有多个项目,每个项目都有自己的子目录,如下所示:
-proj1
--proj1.csproj
-proj2
--proj2.csproj
-proj3
--proj3.csproj
solutionfile.sln

其余的设置看起来还可以,但是我认为您应该弄清楚如何合并多个项目,例如,多个解决方案之间的共享源库。


推荐阅读