vs項目結構解析
vs項目結構解析
當我們用VS開發一個項目的時候,首先應該清楚用VS這個IDE生成的一些文件和文件夾是什么意思,起什么作用,什么場合下使用。
因為我使用的是VS2015,就以這個為例來進行一些說明:
首先要做的是更改你的操作系統,把隱藏的文件、文件夾顯示出來,以完整的顯示VS在生成一個項目時的完整文件、文件夾結構。
1、首先看到的是.sln文件和隱藏的.suo文件(.vs/你的解決方案名/版本/.suo)
Net解決方案下 .sln文件和.suo文件的解釋:
When a Web site is created, a solution file (.sln) and a hidden solution user options file (.suo) are created. By default, these files are created in the My Documents/Visual Studio 2005/Projects folder. bcoz they are not required in the deployed website.
SLN ( own's the following details):
* A list of the projects that are to be loaded into Visual Studio 2005
* A list of project dependencies
* Microsoft Visual SourceSafe information
* A list of add-ins that are available
SUO ( own's the following files):
* The task list
* Debugger break points and watch window settings
* Visual Studio window locationsVisual Studio采用兩種文件類型(.sln和.suo)來存儲特定於解決方案的設置,它們總稱為解決方案文件。為解決方案資源管理器提供顯示管理文件的圖形接口所需的信息
從而在每次繼續開發任務時,不會因開發環境而分散精力;
*.sln:(Visual Studio Solution) 通過為環境提供對項目、項目項和解決方案項在磁盤上位置的引用,可將它們組織到解決方案中。比如是生成Debug模式,還是Release模式,是通用CPU還是專用的等.ps:就是打開文件的索引,正確引導你進入環境,進入工程!
*.suo: (solution user options) 解決方案用戶選項記錄所有將與解決方案建立關聯的選項,
以便在每次打開時,它都包含您所做的自定義設置。比如VS布局,項目最后編譯的而又沒有關掉的文件(下次打開時用)
ps:大概就是保存一些與代碼本身無關的一些配置.
*.suo 是一種文件的格式。它是很重要的文件,*.suo 解決方案用戶選項,記錄所有將與解決方案建立關聯的選項,以便在每次打開時,它都包含用戶所做的自定義設置。
它儲存了用戶界面的自定義配置,包括布局、斷點和項目最后編譯的而又沒有關掉的文件(下次打開時用)等,以便於下一次你打開Visual Studio可以恢復這些設置,因此不要隨便刪除,所以不要管它們。 其實上面英文中解釋已經很清楚了,要申明的是PDB中不帶斷點信息.
其中,VS布局包括:監視器1234的變量列表、斷點標記及開關狀態、輸出窗口錯誤窗口等的分布及其懸浮狀態,還有項目卸載狀態標記。
*.suo文件偶爾會被破壞,從而在構建和編輯應用程序時出現意想不到的結果。如果Visual Studio對於每個解決方案不穩定,就應刪除.suo文件。下次打開解決方案時,Visual Studio會重建它。總結:
sln和suo文件共同組成了解決方案的記錄和配置,VS解決方案中各種配置都存在這里,具體的每一個細節就不一一列舉,以上可以給大家一個整體的認識。
但是你需要清楚一個事實,那就是,sln和suo只是一個記錄解決方案的相關信息的,詳細的項目信息,在其他的文件中,這兩個文件只是起一個組織的作用,將各個信息凝聚在一起,從而形成一個解決方案,方便項目開發。我們也沒有必要細細的研究每一個細節,只不過在此有了這個整體上的認識,大家知道平時使用VS的基本工作記錄都存於此文件中。
所以,也不要隨意的刪掉這個你看似沒用的文件,刪掉代碼也不會丟失,但是,有時候環境配置好后,使用也比較方便,對於這兩個文件,沒必要動它。為了減少項目文件的大小,和這兩個文件沒有關系,但是如果操作不當,會導致解決方案打不開。那么解決辦法就只有重建項目,然后導入代碼文件了,只是會浪費一些時間而已,又要重新組織項目文件。
這兩個文件是很基本的,大小都不大,但是對於組織解決方案確實起了很大的作用,建議不要隨意手動去更改,在VS中操作后自然會對文件修改。
2、接下來應該是一個一個的項目,windows下是以一個文件夾表示一個項目。
Form1.cs Form1.Designer.cs Program.cs
1. 創建 Windows 窗體項目時,默認情況下,C# 會將一個窗體添加到項目中,並為其命名為 Form1。表示該窗體的兩個文件稱為 Form1.cs 和 Form1.Designer.cs。Form1.cs 中寫入的是你自己的代碼;Designer.cs 文件是C# Windows 窗體設計器自動寫入代碼的文件,這些代碼用於實現所有通過從“工具箱”中拖放控件執行的操作。
Designer.cs 文件包含將控件拖動到窗體、在“屬性”窗口中設置屬性等操作時“窗體設計器”寫入的源代碼。通常,根本不應該手動編輯此文件。
2. 一但當你自己動手修改了Designer.cs 文件, 或者是你在學習時, 拷貝了別人的Designer.cs 文件, 反正只要你的Form設值只要有一點點對不上Designer.cs 文件, C#將不會執行Designer.cs 文件.
這就導致你的提示InitializeComponent不存在,但是對應的Form1.Designer.cs中有該方法。
解決辦法是重做一個Form, 讓VS重新生成Designer.cs 文件,除非你特別熟悉Designer.cs 文件與Form的關系。
Form1.cs和Form1.Designer.cs其實是一個類,Visual Studio為了讓我們方便管理,用partial關鍵字把窗體類給拆開了,Form1.Designer.cs存放的是窗體的布局,
你的窗體定義了哪些控件,那些控件的名字、屬性等等,都是存放在Form1.Designer.cs里面的,而Form1.cs則是用來存放處理方法的,
比如你的按鈕點擊事件綁定了Button_Click這個方法,就會出現在Form1.cs里
其實在早期版本的Visual Studio里,是沒有Form1.Designer.cs的,窗體的設計類和邏輯類全在一個文件里。
那么好處就顯而易見了:便於管理。讓你編程的時候能夠更加直觀。
3.Program.cs是程序入口,也就是Main函數。
3、.cs .csproj .resx
.cs:C Sharp Source File
Form1.csproj文件大家應該不會陌生,那就是C#項目文件的擴展名,它是“C Sharp Project”的縮寫。那么它究竟是給誰用的呢?那是給開發工具用的,例如我們在熟悉不過的Visual Studio,以及大家可以沒有接觸過,但是應該都聽說過的MSBuild.exe。Visual Studio會根據csproj里的XML定義來管理項目文件以及相關其他一些種類非常豐富的數據及操作,MSBuild也會根據csproj文件來得知編譯這個項目需要有哪些依賴,默認輸出路徑,Pre-Build和Post-Build需要哪些操作等等。Visual Studio和MSBuild都是開發工具,這就是csproj存在的唯一意義:為“開發環境”提供信息。而到了運行環境中,根本不會有人(操作系統?)關心所謂的csproj文件——也就是“程序是哪里來的”。
Form1.resx: (窗體資源文件)你在設計窗體時所嵌入的資源, 用來存放你的窗體資源的,比如你自定義了你的窗體的圖標,這個圖標就會出現在Form.resx里面。
4、bin文件夾 obj文件夾
Visual Studio 編譯時,在bin 目錄下有debug 和 release 目錄。
Debug: 通常稱為調試版本,它包含調試信息,所以要比Release 版本大很多(可能大數百K或數M),並且不進行任何優化,便於程序員調試程序。
Release: 稱為發布版本,不對源代碼進行調試,編譯時對應用程序的速度進行優化,使得程序在代碼大小和運行速度上都是最優的,以便於用戶很好的使用。
obj目錄用於存放在編譯過程中生成的中間臨時文件,其中也都有debug 和 release 兩個子目錄, 分別對應調試版本和發行版本。在.NET中,編譯是分模塊進行的,每個模塊的編譯結果都保存在了Obj 目錄下。最后會合並為一個.exe 或者 .dll 文件保存到 bin 之中。 因為每次編譯都是增量編譯,也就是只重新編譯改變了的模塊,所以,這個Obj 目錄的作用就是保存這些小塊的編譯結果,加快編譯速度。
一、先解釋一下各個文件的作用:
.pdb文件:
程序數據庫文件(Program Database File)。默認設置下,Debug的PDB是full,保存着調試和項目狀態信息、有斷點、堆棧檢查等代碼,可以對程序的調試配置進行增量鏈接。
而Release的默認設置對PDB指定為pdb-only,保存着程序出了什么錯誤,以及錯誤在哪行。
.vshost.exe文件:
宿主進程文件(VS host process),是Visual Studio 2005中的一項功能,主要是為了提高調試性能。 release時最好刪除。
.vshost.exe.manifest 文件:
是一個以.manifest為后綴的XML文件,用於組織和描述隔離應用程序及並行組件,用於COM類、接口及庫的綁定和激活,而這些信息,以往都是存儲在注冊表中的。
Manifests也制定了組成程序集的文件及Windows類,release 時也最好刪除。
二、不生成這些文件的方法:
不生成.vshost.exe文件的方法
如圖,打開工程屬性的debug標簽頁,將構成選為「Release」,去掉「Visual Studio Hosting Process有效」的勾選后保存。
不生成.pdb文件的方法
如圖,打開工程屬性的build標簽頁,將構成選為「Release」后打開「詳細設定」。將 「輸出」中的「Debug信息」從「pdb only」變為「none」后保存。
5、Properties文件夾下Assemblyinfo.cs Resources.resx Resources.Designer.cs Settings.settings Settings.Designer.cs
Assemblyinfo.cs:程序集信息對應於如下IDE操作
Resources.resx Resources.Designer.cs Settings.settings Settings.Designer.cs
不是每個c#項目都有的...只有VS的WinForm項目模板才會自動生成,與C#無關...
前者是項目資源的代碼文件,后者是項目設置項的代碼文件...
本文轉載:https://www.cnblogs.com/andriod2016/articles/6372605.html