csproj檔案的用途

2021-04-28 20:33:34 字數 1802 閱讀 7458

2023年11月08日 星期六 14:46

不管是不是有人會說老趙是「學術派」,「學術派」是不是適合「做專案」,我還是要強調事物的「概念」和描述乙個問題的嚴謹性。我不認為在面試時回答「我都是在做實際專案,但是對於概念都不太關心」的人真有能力把專案做好。老趙覺得將一些事物的概念理清之後,有些推論自然而然就得出了,想要「誤解」也很難。例如:「http是無狀態的 => 那麼伺服器端如果要知道當前請求用了哪個session空間就要客戶端告知了 => 客戶端儲存?那麼sessionid應該是放在cookie裡的 => 禁用了cookie還能不能用session?除非有其他傳遞sessionid的方式,比如url,否則就不能用」。數學是最為嚴謹的科學,各種定理和推論也全部是靠最基本的公理得出的——當然知道了公理能不能推出定理,這也需要相當的水平,因此我們也需要繼續學習,鍛鍊這種「推理」的「思維能力」。所以老趙也不相信號稱「做專案不需要懂資料結構」的朋友能夠有較好的程式設計能力,能夠應對「只有curd邏輯」以外的應用程式……不多說了,進入我們的正題。

本來今天是在寫一篇關於linq的文章,不過寫著寫著忽然覺得有些找不著北的感覺,似乎有點過於發散了?於是來逛了一下,正好發現有朋友發了一篇文章《.net面試題,看看你的水平》,於是就在這篇文章裡和目前正紅火的小包子同學為某個問題進行了一番爭論。而在吵吵鬧鬧的過程中看到這麼一句話「pdb檔案需要放在debug目錄下才有效果」,忽然覺得有個話題值得一說:「開發環境與執行環境」。回想起平時被問到的問題,發現有不少朋友對於開發環境和執行環境並不是分的非常清楚。那麼就讓我們從標題中的問題開始:「csproj檔案究竟是做什麼用的」。

csproj檔案大家應該不會陌生,那就是c#專案檔案的副檔名,它是「c sharp project」的縮寫。那麼它究竟是給誰用的呢?那是給開發工具用的,例如我們在熟悉不過的visual studio,以及大家可以沒有接觸過,但是應該都聽說過的msbuild.exe。visual studio會根據csproj裡的xml定義來管理專案檔案以及相關其他一些種類非常豐富的資料及操作,msbuild也會根據csproj檔案來得知編譯這個專案需要有哪些依賴,預設輸出路徑,pre-build和post-build需要哪些操作等等。visual studio和msbuild都是開發工具,這就是csproj存在的唯一意義:為「開發環境」提供資訊。而到了執行環境中,根本不會有人(作業系統?)關心所謂的csproj檔案——也就是「程式是**來的」。

如果是個可執行程式,作業系統需要的只是exe,dll,甚至是配置檔案或資源檔案,而並非在開發中舉足輕重的csproj,sln,dbproj等檔案。而像iis這樣的執行環境,更加不會去關注csproj的影子:「csproj是什麼?」iis輕蔑地說,「我只聽web.config的說法」。在執行環境中,csproj的輝煌不在——這是自然,你有辦法向我們的iis證明它使用的dll在開發期是由csproj,sln等檔案來「統領」的嗎?現在說到之前提到的「pdb檔案需要放在debug目錄下才有效果」,其實不然。debug目錄只是vs的模板所「預設存在」的編譯規則所生成的目錄而已,我們在除錯時使用pdb檔案完全可以由vs指定pdb檔案存在的目錄——甚至我們根本不需要vs也能使用pdb檔案。

而且事實上,「模板」在開發環境中的「地位」比csproj檔案都要低,因為只要通過模板建立好內容之後,就無法說明結果和自己有什麼聯絡了。例如我們使用模板建立乙個ajaxcontroltoolkit的extender,其中會生成乙個.cs,乙個.designer.cs和乙個js檔案——呵呵,誰還能證明這三個檔案不是我們手動建立的呢?這就是「開發環境」,一切都是為了開發效率的提高,一切都是為了能夠最終產生乙個可執行的二進位制檔案。而在開發環境的最後乙個成員「編譯器」工作完成之後,所有開發工具便默默地退居二線。在產品環境的舞台上,最耀眼的一定不是我們的開發工具。

這就是「開發環境」與「執行環境」的宿命。

ASP工程檔案(csproj)解讀

c 專案中都會有乙個不起眼的檔案,字尾名csproj,很多人都會忽視它。其實,這個檔案在專案中起到舉足輕重的地位。這個檔案其實是乙個專案的工程檔案,不過,正常開發中,這個檔案基本上不會需要考慮到。這時候,你應該會問這個檔案作用,其實,這個檔案記錄了與工程有關的相關資訊,例如包含的檔案,程式的版本,所...

Linux etc hosts檔案用途

hosts檔案的作用 將一些常用的 網域名稱與其對應的ip位址建立乙個關聯 資料庫 當使用者在瀏覽器中輸入乙個需要登入的 時,系統會首先自動從hosts檔案中尋找對應的ip位址,一旦找到,系統會立即開啟對應網頁,如果沒有找到,則系統會再將 提交dns網域名稱解析伺服器進行ip位址的解析。linux作...

Linux etc hosts檔案用途

hosts檔案的作用 將一些常用的 網域名稱與其對應的ip位址建立乙個關聯 資料庫 當使用者在瀏覽器中輸入乙個需要登入的 時,系統會首先自動從hosts檔案中尋找對應的ip位址,一旦找到,系統會立即開啟對應網頁,如果沒有找到,則系統會再將 提交dns網域名稱解析伺服器進行ip位址的解析。linux作...