.NET解决方案的目录结构


16

我们最近有一个承包商访问,对我们的项目结构方法提出质疑。请注意,我专门指的是目录结构。他建议使用Microsoft指南。我以为我可以在Google“ Microsoft指南.NET项目目录结构”中找到有用的东西,但是事实证明并非如此。就目前而言,我们做这样的事情:

[Company.System.Feature]
  |-doc
     |Sandcastle project
  |-lib
     |Nuget packages
  |-src
    |-Project1 e.g. web
    |-Project2 e.g. business logic
    |-UnittestProject1
    |-Specs

doc文件夹包含一个Sandcastle解决方案,如此处所述:https : //www.codeproject.com/Articles/15176/Sandcastle-Help-File-Builder(请参阅:绝对路径和相对路径)。因此,doc文件夹包含一个Help文件夹,其中包含生成的帮助文件。lib文件夹包含所有Nuget软件包。

是否有任何Microsoft准则,建议如何构建解决方案?我在这里看过:https : //stackoverflow.com/questions/789389/project-structure-for-c-sharp-development-effort/789554? noredirect =1# comment86756309_789554等。我读过的大多数文章和问题似乎都是在2007-2009年创建的。我相信Nuget是在2010年推出的。是否有Microsoft准则?我读到一些叫做Tree Surgeon的东西,但是似乎不再存在了:https : //archive.codeplex.com/? p =treesurgeon

我正在使用TFS;巡航控制和DDD可以发挥任何作用。


4
目录结构很大程度上取决于个人喜好。使用最清楚说明您的项目/组织意图的文件夹结构。
罗伯特·哈维

5
另外,下次有人说您应该遵循“ Microsoft准则”中的某些内容时,请该人提供这些准则,或者告诉您在哪里可以找到它们。否则,这是无用的建议。
罗伯特·哈维

2
奇怪的是将nuget软件包放到了lib中,而不是放在软件包中
Ewan

1
@Ewan,packages对于dotnetcore和VS2017风格的项目,nuget包甚至不再属于。它们现在位于项目的obj目录中。
David Arno

2
pff!升级?!?!?听起来可能会破坏东西
Ewan

Answers:


20

在MSDN上,有一些非常古老的官方指南。这些已经过时了。正如页面上所说:“ 此内容已过时,将不再维护。仅出于礼节,仍向使用这些技术的个人提供。 ”因此,我建议您避免使用这些准则。

试图通过Project Scaffold定义通用解决方案结构。但是,这更面向F#,而不是C#。但是,它并没有真正起飞,并且这些天没有任何迹象表明这些想法正在发展。

最活跃和最新的准则由David Fowler维护,他是Microsoft ASP.NET团队的开发人员。Microsoft内部的许多人员(包括Roslyn(C#和VB.Net编译器)团队)都使用这些准则。因此,您做得比采用这种方法还要糟糕。


我看到了前两个链接,但没有看到第三个链接。+1为第三个链接。我是将整个Sandcastle项目放在docs文件夹中,还是仅将Sandcastle项目生成的帮助文件放在?不知道为什么这个答案被否决了。
w0051977

1
公平地讲,Microsoft新文档系统中未包含的每个页面都标记有“此内容已过时且不再维护”字样。这并不意味着那里没有有用的信息。
罗伯特·哈维

您会放规格吗?在Tests文件夹中还是在Specs目录中(与src文件夹位于同一目录中)?我想这并不重要。
w0051977

@RobertHarvey:足够公平,但是如果已经建立了另一个文件夹,那么仅引用该页面而不进行进一步备份也不是更改项目文件夹结构的理由。
平坦

您可以在GitHub的大多数开源项目(例如Enity Framework)中看到实践中的David Fowlers准则。
pfx
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.