什么是.sln和.vcproj文件,它们包含什么?

时间:2011-08-20 18:31:56

标签: visual-studio

我是Visual Studio世界的新手。有人可以解释一下这两个文件包含的内容吗?我知道其中一个包含有关项目的信息,但另一个呢?

5 个答案:

答案 0 :(得分:55)

项目文件(.vcproj / .vcxproj)包含有关如何将代码编译为DLL或二进制文件的设置,或链接器可以组合到一个单元中的其他内容。项目文件只是一个包含编译器设置,链接器设置的xml文件,并描述了要编译的文件。

解决方案文件是将多个项目文件组合在一起的文本文件。

所以,如果你把它想象成一棵树,那么你就可以像这样对它进行良好的心理描绘:

.sln
   .vcproj
      .h
      .h
      .cpp
      .cpp
   .vcxproj
      .h
      .h
      .cpp
      .cpp
   .csproj
      .cs

答案 1 :(得分:10)

解决方案文件和项目文件采用XML格式,描述项目的各个部分及其关系,配置等。实际上,这两个文件都只是MSBuild脚本(当您猜对了,构建项目时,它们通过MSBuild运行。)

这意味着如果需要,它们很容易手动操作(虽然这应该是一种罕见的情况),并且还允许向构建脚本添加自定义部件,为MSBuild创建可包含解决方案文件的自定义构建脚本,其他的东西,或者只是将解决方案文件(或项目)传递给MSBuild的简单自动构建脚本,比如版本控制签入。

解决方案文件和项目文件之间的区别在于项目文件包含特定于 项目的信息,而不知道其解决方案(但是,Visual Studio会在尝试中查找层次结构)打开项目时找到相关的解决方案,如果存在的话);解决方案文件知道属于 解决方案的所有项目并引用它们中的每一个(例如文件目录,如果您愿意,但有项目),它还包含解决方案范围的信息/ configuration,可以适用于解决方案中的所有项目。

正如Hans Passant所指出的,有一个例外:VS2010之前的C ++项目文件不是XML MSBuild文件,而是format documented by Microsoft on MSDN

答案 2 :(得分:6)

简而言之:一个用于解决方案,另一个用于项目,解决方案可以包含多个项目。

答案 3 :(得分:6)

<。> .vcproj文件包含有关如何将源代码编译到目标(主要是可执行文件)的信息。在许多情况下,使项目文件成功编译至关重要,因此不要删除它。它可以与.dsp文件(Visual Studio 6),.prj文件(Borland编译器)或Makefile(Unix,GNU编译器)进行比较,并包含路径和编译器/链接器命令行选项。

.sln文件只是多个.vcproj文件的集合。由于Visual Studio可以自动创建一个(如果不存在),因此无需保留它以进行分发或归档。它是.dsw文件(Visual Studio 6)的继承者。它的名称“解决方案文件”是恕我直言的误导。

答案 4 :(得分:0)

Visual Studio允许在解决方案中使用多个项目。解决方案中的项目数据位于sln(解决方案)文件中。