为什么以及何时应该使用.sln文件?

时间:2014-06-26 16:47:12

标签: c# solution

我理解解决方案文件包含一组其他项目,但为什么我想要在一个文件中包含一组项目?我工作的公司经常使用这个,但我不明白为什么。

我注意到的另一件事是你可以运行.sln文件,但文件执行时会发生什么?它刚刚做了什么?

所以我的主要问题是为什么在一个.sln文件中存储多个项目而不是仅仅在一个项目中完成所有工作?

7 个答案:

答案 0 :(得分:4)

您可能希望在单个解决方案中使用多个项目的原因:

  • 不同的项目可以有不同的依赖关系(对解决方案中其他项目的依赖关系,或者通常是对第三方dll的依赖关系。)
  • 不同的项目可以是不同的类型 - 控制台应用程序,DLL,Web服务等。
  • 不同的项目可以有不同的前/后构建步骤
  • 您的某些项目甚至可能无法在C#中实现。您也可以在同一解决方案中使用c ++,VB.net等项目。
  • 不同的项目可能是其他各个团队重复使用的组件。
  • 许多其他原因

因此,能够将多个项目组合在一起是有意义的,这样您就可以打开整个组,点击编译以适当的顺序编译所有项目(这可能很重要,例如,其中一个您的项目构建一个另一个项目需要作为依赖项的DLL,然后启动您指定的任何项目。

当您打开解决方案时,它完成所有工作:在单个Visual Studio窗口中打开解决方案中包含的每个项目,以及有关如何编译解决方案的元数据,应在何时启动该项目你点击了Run等等。

答案 1 :(得分:4)

关键是因为,当您编写越来越复杂的应用程序时,您将看到这些复杂的应用程序需要分解成碎片。例如,您可能有一个访问数据库的应用程序。数据库项目可能是独立的。原因是因为您可能希望将此数据库与其他应用程序一起使用。如果数据层api不是分开的,则无法执行此操作。

有多个项目有多个原因。以下是一些:

  1. 代码可重用性。您可能已经设计了一些要打包到库中的代码,并在将来重用其他程序。

  2. 简单。有时,在创建复杂的应用程序时,您需要对各个部分进行构建,因此整个应用程序的调试更容易。

  3. 语言冲突。假设您的应用程序是用C#编写的,但您想使用VB.NET库中包含的一些代码。由于项目不能混合使用C#和VB.NET代码,因此您的解决方案是在同一解决方案中创建不同的项目。

答案 2 :(得分:1)

  

但为什么我要将一组项目放在一个文件中呢?

因为你不是一个爱好程序员,只是学习编程和编写像应用程序一样的hello world。

我的主项目有大约40个属于一个应用程序的项目。一个shell,多个powershell扩展,多个程序,多个安装程序。它们属于一体,共同构建 - 它们是一种解决方案。

  

我注意到的另一件事是你可以运行.sln文件,但文件发生了什么   正在执行?

MSBuild按照解决方案中的说明构建项目,还有什么?

答案 3 :(得分:1)

引用MSDN

的一些摘录
  

Visual Studio提供了两个容器来帮助您高效管理   开发工作所需的项目,例如   引用,数据连接,文件夹和文件。这些容器是   称为解决方案和项目。您使用解决方案资源管理器查看和   管理项目和解决方案及其相关项目。

     

解决方案包含您创建自己需要的项目   应用。解决方案包括一个或多个项目,以及文件和   有助于定义整个解决方案的元数据。视觉工作室   在创建新项目时自动生成解决方案。   Visual Studio将解决方案的定义存储在两个文件中:.sln   和.suo。解决方案定义文件(.sln)存储元数据   定义您的解决方案,包括:

     
      
  • 相关的项目   与解决方案。
  •   
  • 与特定内容无关的项目   项目。
  •   
  • 确定哪个项目的构建配置   要在每种类型的构建中应用的配置。
  •   
     

存储的元数据   构造解决方案并设置其属性时的.suo文件   用于在解决方案处于活动状态时自定义IDE。对于   例如,Solution Explorer显示a的Miscellaneous Files文件夹   解决方案,如果您启用该选项,以及适合的选项   解决方案中包含的项目类型可从中获得   工具箱。

答案 4 :(得分:0)

双击.sln(解决方案)文件时,它将在Visual Studio中打开该解决方案。

解决方案允许您在一个单一的解决方案中将项目组合在一起。

答案 5 :(得分:0)

在解决方案中将项目组合在一起更容易,因为无论何时打开解决方案,该项目运行所需的所有文件也将打开。

它还可以更轻松地创建一个解决方案'对于程序的一部分,然后将该解决方案添加到包含整个程序的主解决方案中。这样可以轻松划分代码,并了解哪些部分依赖于其他部分。

您之前使用什么方法来组织项目?

答案 6 :(得分:0)

这是一个具体的例子:

如果将一些逻辑从项目中拆分为可重用的库,那么这将是第二个项目(类库),如果它们包含在第一个项目中,则可以按名称引用它解。当您运行项目时,第二个项目将由visual studio自动重建。