2011-08-20 272 views

回答

47

项目文件(的.vcproj/.vcxproj)包含关于如何把代码编译成DLL或二进制文件,或别的东西,该连接器可以组装成一个单元的设置。项目文件只是一个xml文件,其中包含编译器设置,链接器设置以及描述要编译的文件。

解决方案文件是一个文本文件,集团多个项目文件一起。

所以,如果你觉得它像一棵树,那么你已经得到了它良好的精神画面是这样的:

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

'* .vcxproj'是Visual Studio 2010及更高版本。 '* .vcproj'是Visual Studio 2008及以下版本。 Visual Studio {2005 | 2008}解决方案如何包含Visual Studio 2010项目文件?另请参阅MSDN上的[生成系统更改](https://msdn.microsoft.com/zh-cn/library/ee862524.aspx)。 – jww

0

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

5

总之:一个是解决方案,而另一种是项目,一个解决方案可以包含多个项目。

9

解决方案文件和项目文件是XML格式,并说明你的项目和他们的关系,配置等的部分。实际上,这两个文件都是简单的MSBuild脚本(当你猜对了时,它们通过MSBuild运行,构建你的项目)。

这意味着如果需要它们很容易用手操纵(尽管这应该是一个并且还允许将自定义部件添加到构建脚本中,为MSBuild创建可包含解决方案文件的自定义构建脚本等,或者只是将解决方案文件(或项目)传递到MSBuild的简单自动构建脚本比如说版本控制登记。

解决方案文件和项目文件之间的区别是,一个项目文件包含特定于项目,信息不知道它的溶液(不过,Visual Studio将查找的层次结构,试图在一定程度上找到相关的解决方案当开启一个项目时,如果有的话);该解决方案文件知道所有属于的项目,其中解决方案并引用每个项目(如文件目录,如果您喜欢但包含项目),它还包含解决方案范围的信息/配置,可以适用于解决方案中的所有项目。

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

+2

.vcproj文件不是msbuild脚本。直到VS2010的.vcxproj –

+0

@Hans Passant:那些有用的信息,我不知道;我做了一个快速搜索,并获得[此参考页](http://msdn.microsoft.com/en-us/library/2208a1f2(v = VS.90))。aspx) - 感谢您的贡献。 –

+2

我知道这是一个旧的线程,但... SLN文件不是XML格式。是的,它是一个文本文件,但文件中没有XML元素。 –

5

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

一个.sln文件仅仅是多重的.vcproj文件的集合。由于Visual Studio可以自动创建一个(如果不存在),所以不需要保留它以进行分发或归档。它是.dsw文件(Visual Studio 6)的后续版本。它的名字“解决方案文件”是恕我直言误导。

+1

解决方案文件包含手动配置的项目间构建依赖关系树,因此您不想删除覆盖多个项目的解决方案文件。 – GeePokey

相关问题