【发布时间】:2019-08-12 18:38:39
【问题描述】:
我是 Visual Studio 世界的新手。有人可以解释一下这两个文件包含什么吗?我知道其中一个包含有关项目的信息,但是另一个呢?
【问题讨论】:
标签: visual-studio
我是 Visual Studio 世界的新手。有人可以解释一下这两个文件包含什么吗?我知道其中一个包含有关项目的信息,但是另一个呢?
【问题讨论】:
标签: visual-studio
项目文件.vcproj / .vcxproj 包含有关如何将代码编译为 DLL 或二进制文件或链接器可以组装成一个单元的其他内容的设置。项目文件只是一个 xml 文件,其中包含编译器设置、链接器设置,并描述了您要编译的文件。
解决方案文件*.sln是一个将多个项目文件组合在一起的文本文件。
所以,如果你把它想象成一棵树,那么你对它的印象是这样的:
.sln
.vcproj
.h
.h
.cpp
.cpp
.vcxproj
.h
.h
.cpp
.cpp
.csproj
.cs
【讨论】:
*.vcxproj 是 Visual Studio 2010 及更高版本。 *.vcproj 是 Visual Studio 2008 及更低版本。 Visual Studio {2005|2008} 解决方案如何包含 Visual Studio 2010 项目文件?另请参阅 MSDN 上的 Build System Changes。
解决方案文件和项目文件采用 XML 格式,描述项目的各个部分及其关系、配置等。事实上,这两个文件都是简单的 MSBuild 脚本(您猜对了,它们是在构建项目时通过 MSBuild 运行的。)
这意味着它们很容易在需要时手动操作(尽管这种情况应该很少见),并且还允许将自定义部分添加到构建脚本中,为 MSBuild 创建可以包含解决方案文件的自定义构建脚本,其中其他事情,或者只是简单的自动构建脚本,将解决方案文件(或项目)传递给 MSBuild,例如,在版本控制签入时。
解决方案文件和项目文件之间的区别在于,项目文件包含特定于那个项目的信息,不知道它的解决方案(尽管,Visual Studio 会在一定程度上查找层次结构以尝试打开项目时找到相关的解决方案,如果有的话);解决方案文件了解属于 该 解决方案的所有项目并引用它们中的每一个(例如文件目录,如果您愿意,但包含项目),它还包含解决方案范围的信息/ 配置,可适用于解决方案中的所有项目。
正如 Hans Passant 所指出的,有一个例外:VS2010 之前的 C++ 项目文件不是 XML MSBuild 文件,而是format documented by Microsoft on MSDN。
【讨论】:
.vcproj 文件包含有关如何将源代码编译为目标(主要是可执行文件)的信息。在许多情况下,拥有成功编译的项目文件至关重要,因此不要删除它。它可与 .dsp 文件 (Visual Studio 6)、.prj 文件(Borland 编译器)或 Makefile(Unix、GNU 编译器)进行比较,并包含路径和编译器/链接器命令行选项。
.sln 文件只是多个 .vcproj 文件的集合。由于 Visual Studio 可以自动创建一个(如果不存在),因此无需保留它以进行分发或存档。它是 .dsw 文件 (Visual Studio 6) 的继承者。恕我直言,它的名称“解决方案文件”具有误导性。
【讨论】:
简而言之:一个是解决方案,一个是项目,一个解决方案可以包含多个项目。
【讨论】:
Visual Studio 允许在一个解决方案中包含多个项目。解决方案中的项目数据位于 sln(解决方案)文件中。
【讨论】: