Visual Studio项目/解决方案结构有哪些最佳实践?

40

我看到了很多不同的看法,所以我想知道是否有关于如何设置Visual Studio项目和解决方案的最佳实践,特别是针对相同解决方案的多个解决方案。

例如: 假设我有一个任务需要调用Web应用程序、控制台应用程序和共享业务逻辑库。

在我的职业生涯中,我曾经看到过这种情况出现在1个、2个和3个解决方案中。这只是一个简单的例子,但如果项目数量增加呢?在何时保持一个解决方案或者拆分成多个解决方案之间存在着一条界线吗?

6个回答

16

的确,在MSDN上有一些针对这种设置的指南。我在StackOverflow上回答了一个类似的问题,提供了一个简短的总结。(链接)


15

谢谢你写下这篇文章,我觉得很有帮助,特别是这句话:“理想情况下,团队编写的所有源代码都应该在一个解决方案文件中,并使用项目引用引用所有项目。不这样做是我见过的解决方案问题的最大原因。永远不要为内部程序集使用文件引用!这会带来很多麻烦。” - Jon Coombs
这似乎假定团队和应用程序之间存在1:1的比例关系。我很难接受仅仅因为它们由一个团队开发,就应该将不同的应用程序组合在同一个解决方案中。当应用程序有共同的项目时,是的,但否则不应该这样做。 - Christian Davén

7

解决方案是为开发人员在特定情况下使用的,项目(.CSPROJ用于C#)是真正进行编译的地方。

理论上,如果有4个不同的项目,开发人员可能希望将这些项目的24种不同组合合并成解决方案。

如果您保持一切在项目级别上,您就不必担心开发人员如何安排其.SLN文件。


4
今年在 TechEd 上,我向一位微软的“专家”询问过这个问题,他基本上同意你在这里所说的,即主张不要将 .sln 文件完全添加到源代码控制中,只需添加 .csproj 文件即可。每个开发者都可以根据特定任务选择适合的组合。 - rohancragg
6
考虑这一点确实有帮助,但我觉得很奇怪。如果多个开发人员正在开发单个 Windows Forms 应用程序,他们肯定想以相同的方式构建它。而且我认为在源代码控制中始终可以有多个 .sln 文件。 - Jon Coombs

4
您可以有多个解决方案,每个解决方案都可以引用它关心的项目。以您的示例为例,您共享的业务逻辑库可能有相应的单元测试库。这两个项目可以包含在一个解决方案中。同时,您可能有另一个解决方案,其中包含您提到的三个项目,但在这种情况下,不包括单元测试库。

4

我的解决方案通常包括以下内容:

  • Web应用程序项目
    • “Common”文件夹,用于基础和公共辅助类
    • “Include”文件夹
      • “Styles”文件夹
      • “Scripts”文件夹
      • “Images”文件夹
    • “UserControls”文件夹
  • Web服务项目
  • Web框架项目
  • 业务层项目
  • 业务框架项目
  • 数据访问项目

1

我喜欢将所有与某个任务相关的项目都包含在一个解决方案中。因此,根据您提到的示例,我会创建一个包含三个属于我被要求完成的解决方案的项目的解决方案。这样可以将完成任务所需的所有元素放在一起,我发现这简化了包含其他必要元素以解决手头任务的过程。


我认为最佳实践取决于你认为最简单的做法。 - CheGueVerra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接