你如何设置你的.NET开发树?

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

-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
    • 树干
      • 桌面
      • ReferencedAssemblies
      • 共享
      • 解决方案
      • 测试
      • 站点

然后确保所有项目/解决方案文件仅使用相对路径,并且分支工作正常。 桌面/ Web适用于各种类型的项目,Test适用于任何unit testing项目,Solutions文件夹具有每个解决方案的文件夹,其中只包含解决方案文件。 ReferencedAsmblies包含我们未在解决方案中包含的所有程序集(这些程序集有时是我们在构建解决方案时不想构建的本地项目或者像rhinomocks或log4net等第三方程序集等。共享用于跨多个解决方案使用的任何核心库(数据访问,业务逻辑等)。

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

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

如果我正确地理解了你的结构,我认为你的开发树中会有很多与“tools”和“lib”相关的重复项。 很可能这些是可能由不同项目共享的外部工具和库。

对我们有用的东西是:
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

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

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

当然,你如何设置并不重要,但是使用逻辑有组织的标准来适应项目并坚持良好的纪律。 无论您是单人还是团队,这都很有用。

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

  • 建立
  • LIB
  • SRC
    • <用于应用程序,测试,数据库迁移等的各种src目录)
  • 工具

树干

  • 与上面相同