1.關(guān)于 bin 目錄和 obj 目錄
bin 目錄用來保存項(xiàng)目生成后程序集,它有 Debug 和 Release 兩個(gè)版本,分別對應(yīng)的文件夾為 bin/Debug 和 bin/Release,這個(gè)文件夾是默認(rèn)的輸出路徑,我們可以通過:項(xiàng)目屬性—>配置屬性—>輸出路徑來修改。
obj 目錄是用來保存每個(gè)模塊的編譯結(jié)果,在 .NET 中,編譯是分模塊進(jìn)行的,編譯整個(gè)完成后會(huì)合并為一個(gè) .DLL 或 .EXE 保存到 bin 目錄下。因?yàn)槊看尉幾g時(shí)默認(rèn)都是采用增量編譯,即只重新編譯改變了的模塊,obj 保存每個(gè)模塊的編譯結(jié)果,用來加快編譯速度。是否采用增量編譯,可以通過:項(xiàng)目屬性—>配置屬性—>高級(jí)—>增量編譯來設(shè)置。
2.“是否復(fù)制到本地”的設(shè)置問題
在添加引用時(shí),.NET 會(huì)記錄添加的引用絕對路徑,這些設(shè)置保存在“每用戶”文件中,(Solution.csproj.user),可以通過記事本打開查看。也可以在:項(xiàng)目屬性—>通用屬性—>引用路徑里面查看。如果設(shè)置復(fù)制到本地為 true,在生成項(xiàng)目時(shí)會(huì)自動(dòng)拷貝該 DLL 到項(xiàng)目生成文件夾中(bin 目錄),否則不會(huì)拷貝。在生成項(xiàng)目時(shí),對所添加的引用的是絕對路徑,而在運(yùn)行時(shí)程序集默認(rèn)只在當(dāng)前所在的路徑下去找。要修改引用的路徑,必須通過編程的方法去實(shí)現(xiàn)。使用 References 對象。
某些軟件從功能上有企業(yè)版、標(biāo)準(zhǔn)版之分,.NET 程序集有 Debug 和 Release之 區(qū)別。關(guān)于 Debug 和 Release,MSDN 里面是這么說的:
Visual Studio 項(xiàng)目對程序的發(fā)布和調(diào)試版本分別有單獨(dú)的配置。
顧名思義,生成調(diào)試版本的目的是用于調(diào)試,而生成發(fā)布版本的目的是用于版本的最終分發(fā)。
如果在 Visual Studio 中創(chuàng)建程序,Visual Studio 將自動(dòng)創(chuàng)建這些配置并設(shè)置適當(dāng)?shù)哪J(rèn)選項(xiàng)和其他設(shè)置。在默認(rèn)設(shè)置下:
程序的“調(diào)試”配置用全部符號(hào)調(diào)試信息編譯,不進(jìn)行優(yōu)化。(優(yōu)化會(huì)使調(diào)試復(fù)雜化,因?yàn)樵创a和生成的指令間的關(guān)系更加復(fù)雜。)
程序的“發(fā)布”配置被完全優(yōu)化,不包含任何符號(hào)調(diào)試信息。調(diào)試信息可在單獨(dú)的 PDB 文件中生成。
當(dāng)在程序集的屬性頁中選 Debug 模式時(shí),設(shè)置如下:
當(dāng)選擇 Release 模式時(shí),設(shè)置如下:
兩者的不同點(diǎn)如下:
項(xiàng)目 Debug Release
條件編譯常數(shù) Debug;Trace Trace
優(yōu)化代碼 False True
輸出路徑 bin\Debug bin\Release
生成調(diào)試信息 True False
Debug 模式下生成的程序集為調(diào)試版本,未經(jīng)優(yōu)化;在 bin\debug\ 目錄中有兩個(gè)文件,除了要生成的 .exe 或 .dll 文件外,還有個(gè) .pdb 文件,這個(gè) .pdb 文件中就記錄了代碼中的斷點(diǎn)等調(diào)試信息;Release 模式下不包含調(diào)試信息,并對代碼進(jìn)行了優(yōu)化,\bin\Release\ 目錄下只有一個(gè) .exe 或 .dll 文件(也可能有 .pdb 文件,程序調(diào)試數(shù)據(jù)庫 (PDB) 文件保存著調(diào)試和項(xiàng)目狀態(tài)信息。千一網(wǎng)絡(luò)編輯注)。
注意若要更改項(xiàng)目的生成模式,不能只從項(xiàng)目屬性頁上點(diǎn)“配置”下拉框更改,那樣不起作用,必須點(diǎn)右上角的“配置管理器”按鈕才能更改。