是否将所有项目添加到同一解决方案?

时间:2009-10-02 12:34:02

标签: visual-studio project structure

我是我工作的公司的内部网开发人员,过去5年我一直这样做。我的项目分为两个解决方案,“Intranet”解决方案本身和“Library”解决方案。 “图书馆”sln本身有几个包含DAL,BLL等的项目。之所以我将它们保存在不同的解决方案中是因为我认为“可能”,有一天我的图书馆sln也可用于其他项目 - 你知道重用我已经写过的代码:)嗯,这从未发生过。现在,由于将所有项目放在同一个.sln中更容易,我想这样做。这是明智的情况吗?如果你穿我的鞋子,你会怎么做?

6 个答案:

答案 0 :(得分:2)

过去我在多个解决方案中使用并重复使用相同的“项目” - 我真的只是将解决方案视为项目集合的“特定”实例。

例如,我们可能针对同一整体软件提供不同的解决方案,具体取决于我们是要进行单元测试(在他们自己的项目中)还是集成测试(在单独的项目中),我们会打开我们即将做的事情是正确的解决方案。这样,如果您使用单元测试进行正常编码,则不必每次都构建集成测试代码,反之亦然。

唯一需要注意的是将项目引入一个解决方案,该解决方案是许多其他项目/解决方案的依赖关系,然后“意外地”更改其中的代码,而不是在侧面项目而不是主要代码中。然后你可以开始破坏依赖它的其他项目的负载,而不是实现!

答案 1 :(得分:0)

是的,你可以做到!您仍可以重复使用DAL和BLL,因为项目设置存储在特定项目文件(csproj,vbproj,...)中。同样存在依赖关系,所以没有问题,也很好。我有一个addin-infrastructure,对于每个和每个addin-package,我都需要addin-host,它包含在几个解决方案文件中。我从未遇到任何问题。在文本编辑器中打开* .sln文件以查看其内容......只是指向项目的链接。

答案 2 :(得分:0)

只需将您的库项目添加到您的Intranet sln即可。保持您的图书馆解决方案不变。

答案 3 :(得分:0)

我个人都将它们添加到同一个解决方案中,是的。也就是说,如果您计划在其他项目中使用解决方案中的某些库,则无关紧要:您仍然可以将已编译的dll添加到这些解决方案中,或者您可以选择将它们作为现有项目添加到新解决方案中

所以是的,我将所有内容添加到同一个解决方案中:gui-projects,库,甚至是单元测试。也许如果你的解决方案变得非常大(超过20个项目,或更大),最好将它们分开,但我从未参与过这么大的项目。

答案 4 :(得分:0)

就我而言,我将解决方案和项目分开,给我留下了大量项目和一些解决方案文件。我在新的解决方案中添加了我需要的所有项目。

好处是我只在工作区中拥有我真正需要的项目,并且在所有其他解决方案中仍然有所改变。 缺点是它在所有其他解决方案中也会发生变化,这意味着如果您更改广泛使用的库的API,则必须检查所有其他解决方案是否存在不兼容性。

答案 5 :(得分:0)

我更喜欢有两种解决方案。它们都具有相同的结构(或多或少),但第二个包含可重用的基础结构代码,仅与特定项目无关。问题是 - 你的项目代码不应该包含类似框架(即'IsNumeric()'字符串扩展方法)的东西,旁边是严肃的银行业务逻辑(即使你不会重用你的'库')。这只会使事情更具可读性和可维护性。

例如:

  

解决方案1:

     
      
  • ProjectName.Core
  •   
  • ProjectName.Infrastructure
  •   
  • ProjectName.Application
  •   
  • ProjectName.UI
  •   
  • ProjectName.IntegrationTests
  •   
  • ProjectName.UnitTests
  •   

  

解决方案2:

     
      
  • CompanyName.Core
  •   
  • CompanyName.Infrastructure
  •   
  • CompanyName.Application
  •   
  • CompanyName.UI
  •   
  • CompanyName.Tests
  •   

我尽量不在一个解决方案中拥有超过10个项目。否则 - 它会导致“卸载项目”/“重新加载项目”之间的无限切换。