色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

概念,依舊是概念……csproj文件是做什么用的?

  不管是不是有人會說老趙是“學(xué)術(shù)派”,“學(xué)術(shù)派”是不是適合“做項目”,我還是要強(qiáng)調(diào)事物的“概念”和描述一個問題的嚴(yán)謹(jǐn)性。我不認(rèn)為在面試時回答“我都是在做實際項目,但是對于概念都不太關(guān)心”的人真有能力把項目做好。老趙覺得將一些事物的概念理清之后,有些推論自然而然就得出了,想要“誤解”也很難。例如:“HTTP是無狀態(tài)的 => 那么服務(wù)器端如果要知道當(dāng)前請求用了哪個Session空間就要客戶端告知了 => 客戶端存儲?那么SessionID應(yīng)該是放在Cookie里的 => 禁用了Cookie還能不能用Session?除非有其他傳遞SessionID的方式,比如URL,否則就不能用”。數(shù)學(xué)是最為嚴(yán)謹(jǐn)?shù)目茖W(xué),各種定理和推論也全部是靠最基本的公理得出的——當(dāng)然知道了公理能不能推出定理,這也需要相當(dāng)?shù)乃剑虼宋覀円残枰^續(xù)學(xué)習(xí),鍛煉這種“推理”的“思維能力”。所以老趙也不相信號稱“做項目不需要懂?dāng)?shù)據(jù)結(jié)構(gòu)”的朋友能夠有較好的編程能力,能夠應(yīng)對“只有CURD邏輯”以外的應(yīng)用程序……不多說了,進(jìn)入我們的正題。

  本來今天是在寫一篇關(guān)于LINQ的文章,不過寫著寫著忽然覺得有些找不著北的感覺,似乎有點過于發(fā)散了?于是來博客園逛了一下,正好發(fā)現(xiàn)有朋友發(fā)了一篇文章《.NET面試題,看看你的水平》,于是就在這篇文章里和目前正紅火的小包子同學(xué)為某個問題進(jìn)行了一番爭論。而在吵吵鬧鬧的過程中看到這么一句話“pdb文件需要放在Debug目錄下才有效果”,忽然覺得有個話題值得一說:“開發(fā)環(huán)境與運行環(huán)境”。回想起平時被問到的問題,發(fā)現(xiàn)有不少朋友對于開發(fā)環(huán)境和運行環(huán)境并不是分的非常清楚。那么就讓我們從標(biāo)題中的問題開始:“csproj文件究竟是做什么用的”。

  csproj文件大家應(yīng)該不會陌生,那就是C#項目文件的擴(kuò)展名,它是“C Sharp Project”的縮寫。那么它究竟是給誰用的呢?那是給開發(fā)工具用的,例如我們在熟悉不過的Visual Studio,以及大家可以沒有接觸過,但是應(yīng)該都聽說過的MSBuild.exe。Visual Studio會根據(jù)csproj里的XML定義來管理項目文件以及相關(guān)其他一些種類非常豐富的數(shù)據(jù)及操作,MSBuild也會根據(jù)csproj文件來得知編譯這個項目需要有哪些依賴,默認(rèn)輸出路徑,Pre-Build和Post-Build需要哪些操作等等。Visual Studio和MSBuild都是開發(fā)工具,這就是csproj存在的唯一意義:為“開發(fā)環(huán)境”提供信息。而到了運行環(huán)境中,根本不會有人(操作系統(tǒng)?)關(guān)心所謂的csproj文件——也就是“程序是哪里來的”。

  如果是個可執(zhí)行程序,操作系統(tǒng)需要的只是exe,dll,甚至是配置文件或資源文件,而并非在開發(fā)中舉足輕重的csproj,sln,dbproj等文件。而像IIS這樣的運行環(huán)境,更加不會去關(guān)注csproj的影子:“csproj是什么?”IIS輕蔑地說,“我只聽web.config的說法”。在運行環(huán)境中,csproj的輝煌不在——這是自然,你有辦法向我們的IIS證明它使用的dll在開發(fā)期是由csproj,sln等文件來“統(tǒng)領(lǐng)”的嗎?現(xiàn)在說到之前提到的“pdb文件需要放在Debug目錄下才有效果”,其實不然。Debug目錄只是VS的模板所“默認(rèn)存在”的編譯規(guī)則所生成的目錄而已,我們在調(diào)試時使用pdb文件完全可以由VS指定pdb文件存在的目錄——甚至我們根本不需要VS也能使用pdb文件。

  說到了“模板”,這其實又是“開發(fā)環(huán)境”的概念。我們在VS中選擇New Item或New Project時,可以在談出窗口的左邊找到模板的分類,而又邊則是一堆可用的模板。這些模板是哪來的呢?自然是人為生成給VS用的,您不妨看看自己My Documents/Visual Studio 2008/Templates目錄下是否存在一些zip文件,那就是存放“My Templates”的壓縮包,感興趣的朋友可以學(xué)習(xí)一下如何建立一個模板。而在“運行環(huán)境”下,更不會知道開發(fā)中用了什么模板。不知您是否提過這樣的問題:“為什么Web Site中無法使用ASP.NET AJAX,而Web Application就可以?”現(xiàn)在您應(yīng)該已經(jīng)知道了,運行時期的問題和Web Site、Web Application與否沒有任何關(guān)系。那么是如何產(chǎn)生這個問題的呢?看看您的Web.config?看看頁面上提示了什么信息?用Fiddler看看請求的輸出是什么?其實在很多時候“排錯”并沒有什么妙法,唯“仔細(xì)”二字。

  而且事實上,“模板”在開發(fā)環(huán)境中的“地位”比csproj文件都要低,因為只要通過模板創(chuàng)建好內(nèi)容之后,就無法說明結(jié)果和自己有什么聯(lián)系了。例如我們使用模板創(chuàng)建一個AjaxControlToolkit的Extender,其中會生成一個.cs,一個.designer.cs和一個js文件——呵呵,誰還能證明這三個文件不是我們手動創(chuàng)建的呢?這就是“開發(fā)環(huán)境”,一切都是為了開發(fā)效率的提高,一切都是為了能夠最終產(chǎn)生一個可執(zhí)行的二進(jìn)制文件。而在開發(fā)環(huán)境的最后一個成員“編譯器”工作完成之后,所有開發(fā)工具便默默地退居二線。在產(chǎn)品環(huán)境的舞臺上,最耀眼的一定不是我們的開發(fā)工具。

  這就是“開發(fā)環(huán)境”與“運行環(huán)境”的宿命。

NET技術(shù)概念,依舊是概念……csproj文件是做什么用的?,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 泸定县| 大厂| 密山市| 武汉市| 巴南区| 黄龙县| 乡宁县| 德清县| 宾川县| 石台县| 玉环县| 新乐市| 玉田县| 平湖市| 五莲县| 陕西省| 福鼎市| 交口县| 蓝田县| 无棣县| 临湘市| 视频| 安西县| 宣城市| 房山区| 武川县| 乐业县| 得荣县| 钦州市| 微山县| 宁城县| 任丘市| 黄骅市| 松桃| 灵石县| 突泉县| 丹凤县| 庆元县| 伊金霍洛旗| 彭泽县| 屏东县|