我是全新的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