VS2010 文件類型介紹+Git託管說明

概述:

解決方案(Solution):一個大型項目的整體的工作環境; 
工程 (Project):一個解決方案下的一個子工程;

在VS中,一個Solution可以有一個或多個Project。在我們創建一個工程時,如果沒有指定Solution,VS會幫我們創建一個與工程名相同的Solution,這時一個Solution裏只有一個Project。所有在我們的Project的文件目錄結構中,Project文件夾下還有一個Project文件夾,第一個就是整個Solution的目錄,第二個纔是Project的目錄。

VS2010  新建項目後會產生文件sln、suo、sdf、ipch等,項目工程文件夾下包括vcxproj、vcxproj.user、filters、ReadMe.txt、targetver.h、stdafx.h、stdafx.cpp及其他文件(對於其他工程類型的還有dllmain.cpp、def、props/vsprops文件等)。

此外各個工程編譯、鏈接、生成過程中的各種中間文件、調試文件、最終文件等,比較常見的pdb、ilk、obj、log、pch、exe、lib、dll、exp、manifest,而某些中間文件可以不用理會。
 

解決方案相關的文件:

Project.sln: 
整個解決方案(Solution)的配製文件,組織多個工程和相關的元素到一個解決方案中。用鼠標雙擊它就能用VS打開整個工程項目。主要包括工程項目組織結構、位置、工程編譯環境配置等信息。

官網介紹鏈接:https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/bb165922%28v%3dvs.90%29

Project.sdf: 

解決方案工程信息數據庫文件,此文件同ncb文件,都比較大,也可以刪除,重新打開解決方案後會自動創建,主要提供提供的智能感知、代碼恢復等信息;用於瀏覽相關的數據庫文件,它支持瀏覽和導航的特性。如跳轉到方法、變量的聲明,查找所有對象的所有被引用的地方,類視圖等等。

Project.suo: 
(solution user opertion) 儲存了用戶界面的自定義配置,包括佈局、斷點和項目最後編譯的而又沒有關掉的文件等,以便下一次你打開Visual Studio可以恢復這些設置,一般爲隱藏文件。

官網介紹鏈接:https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/bb165909%28v%3dvs.90%29

Project.opensdf: 
打開解決方案(Solution)時的臨時文件,這個文件只有你的解決方案在VS打開的狀態纔會有,工程一關閉文件就被刪除了。

工程相關的文件

Project.vcxproj: 

項目工程文件,裏面包含的該工程的工具集、工程編譯、鏈接、調試等相關的配置。

*.vcproj:VS2008以及VS2008之前版本的VS工程文件

*.vcxproj:VS2010以及VS2010之後版本的VS工程文件

不同VS IDE的項目轉化,可以通過修改此文件實現,低版本轉高版本IDE,則直接打開即可,而高版本轉到低版本需要修改工程文件,另外版本間轉化可能會出現某些API使用等限制,可能需要修改、替換;vcproj與vcxproj內容、結構還是有所差異,轉化時需要修改的地方比較多,如果修改的地方比較多,可以重新建立工程將相應文件添加進去,修改工程屬性也可。

Project.vcxproj.filters: 
文件過濾器,解決方案視圖下文件的組織和編排都是定義在這個文件中的。如果由於某種特殊的原因(如系統或VS突然崩潰)導致你打開工程時文件的組織結構是亂的,100%就是這個文件的原因。

Project.vcxproj.user: 

不同用戶有不同的本地用戶配置,主要是一些窗體佈局、位置等,與項目具體內容一般無關,可刪除。

其他文件

以下文件主要針對Visual C++ Projects

ncb:(no compile browser)VC++自動創建的信息跟蹤文件可以刪除重新打開解決方案後會自動再次創建,此文件一般比較大;

ipch:主要保存預編譯的頭文件和智能提示信息用的,也可以刪除,重新打開解決方案後會自動創建;

VC.db:SQLite3格式的文件,裏面應是項目相關的文件信息,同ncb、sdf文件,一般比較大可刪除,重新打開解決方案後會自動創建;

VC.VC.opendb:此文件在項目打開的時候創建,關閉的時候自動刪除,目前作用未知;

ReadMe.txt:裏面主要是一些工程創建時嚮導產生的各個文件描述信息;

targetver.h:主要定義程序運行的環境,如限制程序、定製版本,如WINVER、_WIN32_WINNT、_WIN32_WINDOWS、_WIN32_IE等宏定義,此外有的版本還包括SDKDDKVer.h或WinSDKVer.h平臺版本控制;

stdafx.h:包含targetver.h,可定義或聲明一些公用函數、宏、結構、需要的頭文件等信息,因各個cpp一般會包含引用stdafx.h,故以此實現控制各個cpp文件中可能用到的宏控制等以及預編譯;

stdafx.cpp:很少做其他的用途,一般只是#include "stdafx.h",已生成pch預編譯頭,當然用戶也可以根據需要做其他的功能實現等,採用預編譯頭文件方式,從而可以加速編譯過程;

rc/rc2:資源文件,應用程序中用到的所有的資源,其中rc文件中的資源可以直接在VC集成環境中以可視化的方法進行編輯和修改,rc2則可根據需要只能手動修改,一般使用的時候可根據需要在rc文件中包含rc2文件;

rc2文件可以單獨獨立提出來,供不同工程項目rc文件include使用而不用每個工程都去創建相同的rc2文件內容,不同項目工程應有自己的rc文件,事實上rc文件中還可以包含其他的rc文件;

aps:主要記錄資源信息, aps可以刪除,進入程序,重新打開解決方案後會自動生成;

ico:應用程序的圖標資源文件;

dllmain.cpp:DLL應用程序的入口點,這裏邊可以做一些庫第一次加載、卸載,以及新線程加載該庫時執行的相關的工作,比如通信socket、某些全局變量、共享資源、掛鉤等管理;

def:一般是用作動態庫導出文件,裏面主要包含導出庫名、描述、導出的各個函數;若不使用export導出函數或類,可採用def的方式也比較簡單,而且還可以導出相同函數地址的不同得名稱,其可防止導出函數重命名,以供其他編程語言或工具使用;

props/vsprops:工程屬性表文件,後者爲vs2008的,前者爲vs2010及以後版本的,其主要包含工程屬性配置相關,可以單獨提取出來供不同工程項目公共使用;

pdb:調試的符號文件,程序數據庫 (PDB) 文件保存着調試和項目狀態信息,使用這些信息可以對程序的調試配置;

lilk:增量鏈接期間產生的臨時文件,若取消生成,則可能導致編譯鏈接比較慢;

obj:c、cpp編譯後的二進制目標文件,內部包含程序相對地址,在鏈接階段加入link與相關lib等鏈接,可生產exe文件;

log:主要記錄編譯過程中的輸出信息、日誌;

exe:編譯、鏈接後產生的可執行文件,當然也可以是庫,exe相對obj來說,前者提供的是絕對地址,而後者只是提供相好地址;

lib:生成的靜態庫文件或者動態庫dll的引入庫文件;

dll:動態庫文件,供客戶或其他開發人員使用,一般附加h頭文件,或者某些還提供lib引入庫或def文件;

exp:生成動態庫dll時的臨時導出庫,主要用在多個庫相應引用鏈接時,供IDE使用;一般客戶或開發人員不會使用到該文件;

manifest:VS提供的程序部署、清單文件,內部定義了程序運行時的依賴關係、依賴的文件庫,如CRT、MFC庫名稱和版本等信息;在早些時候編譯的Debug或Release版本的程序時需要提供該清單文件,不過可以通過配置工程屬性實現程序的內嵌該清單文件,此外還可以根據需要提供額外的其他清單文件。

官網介紹鏈接:https://docs.microsoft.com/en-us/cpp/ide/file-types-created-for-visual-cpp-projects?view=vs-2017

將VS2010工程提交給Git管理時需要哪些文件:

*.h  *.cpp   *.rc  *.sln  *.vcxproj  *.vcxproj.filters  以及res目錄下的資源文件。

如果使用Git的過濾配置,則還需要.gitignore文件。

其他的諸如*.suo  *.sdf  *.opensdf  *.vcxproj.user均可以過濾掉!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章