我是全新的Visual Studio。有人可以解释这两个文件包含什么吗?我知道其中一个包含有关项目的信息,但另一个呢?什么是.sln和.vcproj文件,它们包含什么?
回答
项目文件(的.vcproj/.vcxproj)包含关于如何把代码编译成DLL或二进制文件,或别的东西,该连接器可以组装成一个单元的设置。项目文件只是一个xml文件,其中包含编译器设置,链接器设置以及描述要编译的文件。
解决方案文件是一个文本文件,集团多个项目文件一起。
所以,如果你觉得它像一棵树,那么你已经得到了它良好的精神画面是这样的:
.sln
.vcproj
.h
.h
.cpp
.cpp
.vcxproj
.h
.h
.cpp
.cpp
.csproj
.cs
Visual Studio允许解决方案中包含多个项目。项目在解决方案中的数据位于sln(解决方案)文件中。
总之:一个是解决方案,而另一种是项目,一个解决方案可以包含多个项目。
解决方案文件和项目文件是XML格式,并说明你的项目和他们的关系,配置等的部分。实际上,这两个文件都是简单的MSBuild脚本(当你猜对了时,它们通过MSBuild运行,构建你的项目)。
这意味着如果需要它们很容易用手操纵(尽管这应该是一个并且还允许将自定义部件添加到构建脚本中,为MSBuild创建可包含解决方案文件的自定义构建脚本等,或者只是将解决方案文件(或项目)传递到MSBuild的简单自动构建脚本比如说版本控制登记。
解决方案文件和项目文件之间的区别是,一个项目文件包含特定于是项目,信息不知道它的溶液(不过,Visual Studio将查找的层次结构,试图在一定程度上找到相关的解决方案当开启一个项目时,如果有的话);该解决方案文件知道所有属于的项目,其中解决方案并引用每个项目(如文件目录,如果您喜欢但包含项目),它还包含解决方案范围的信息/配置,可以适用于解决方案中的所有项目。
正如Hans Passant指出的那样,存在一个例外:VS2010之前的C++项目文件不是XML MSBuild文件,而是format documented by Microsoft on MSDN。
.vcproj文件不是msbuild脚本。直到VS2010的.vcxproj –
@Hans Passant:那些有用的信息,我不知道;我做了一个快速搜索,并获得[此参考页](http://msdn.microsoft.com/en-us/library/2208a1f2(v = VS.90))。aspx) - 感谢您的贡献。 –
我知道这是一个旧的线程,但... SLN文件不是XML格式。是的,它是一个文本文件,但文件中没有XML元素。 –
一个.vcproj文件包含有关如何编译源到目标信息(主要是,一个可执行文件)。在许多情况下,为了成功编译项目文件至关重要,所以不要删除它。它可以与.dsp文件(Visual Studio 6),.prj文件(Borland编译器)或Makefile(Unix,GNU编译器)进行比较,并包含路径和编译器/链接器命令行选项。
一个.sln文件仅仅是多重的.vcproj文件的集合。由于Visual Studio可以自动创建一个(如果不存在),所以不需要保留它以进行分发或归档。它是.dsw文件(Visual Studio 6)的后续版本。它的名字“解决方案文件”是恕我直言误导。
解决方案文件包含手动配置的项目间构建依赖关系树,因此您不想删除覆盖多个项目的解决方案文件。 – GeePokey
- 1. 什么是.pid文件,它包含什么?
- 2. 创建.sln/vcproj文件
- 3. 它是什么,安卓:layout_width和layout_height指什么?它是否包含保证金?
- 4. 什么是#import和@class,为什么它们都在.h和.m文件中?
- 5. 什么是nameser_compat.h,为什么不包含它?
- 6. NSComparisonResult和NSComparator - 它们是什么?
- 7. 什么是HashMap和ArrayList,它们对于什么有用?
- 8. 什么是ldf文件,该文件在SQL Server数据库中包含什么?
- 9. 什么是仿函数,为什么我们需要它们?
- 10. 什么是测试文件,它们为什么包含在Node.js安装程序中,但不包含二进制文件?
- 11. enCapsa - 它是什么和用于什么?
- 12. 什么是clojure.lang.Var.getRawRoot和它为什么叫?
- 13. 什么是jar文件包含com.google.api.services.samples.youtube.cmdline.Auth和com.google.common.collect.Lists
- 14. 目标文件包含什么内容?
- 15. 什么weblogic jar文件包含com.bea.logging.BaseLogRecord?
- 16. .exe文件包含什么内容?
- 17. 什么是simv可执行文件的可能选项,它们的含义是什么?
- 18. 这些数字是什么,它们的类型是什么?
- 19. 什么是OS X会话类型,它们是什么意思?
- 20. 这些IIS绑定是什么?它们的目的是什么?
- 21. .NET PackagePart对象 - 它包含了什么?
- 22. 它为什么包含“使用哪里”?
- 23. C++头文件和实现文件:包含什么?
- 24. 什么是GPX文件?它的用途是什么?
- 25. 什么是.do文件?它的MIME类型是什么?
- 26. 什么是restore.dg文件?它的语法是什么?
- 27. SQL,Postgres OID,它们是什么以及它们为什么有用?
- 28. PHP包和子包:它们用于什么?
- 29. UDP和TCP数据包有什么区别?你用它们做什么?
- 30. '='和';'是什么意思?字符在.bat文件中的含义是什么?
'* .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