2011-08-20 279 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

相關問題