我是Visual Studio世界的新手。有人可以解释一下这两个文件包含的内容吗?我知道其中一个包含有关项目的信息,但另一个呢?
答案 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)
.sln文件只是多个.vcproj文件的集合。由于Visual Studio可以自动创建一个(如果不存在),因此无需保留它以进行分发或归档。它是.dsw文件(Visual Studio 6)的继承者。它的名称“解决方案文件”是恕我直言的误导。
答案 4 :(得分:0)
Visual Studio允许在解决方案中使用多个项目。解决方案中的项目数据位于sln(解决方案)文件中。