天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

  不管是不是有人會說老趙是“學術派”,“學術派”是不是適合“做項目”,我還是要強調事物的“概念”和描述一個問題的嚴謹性。我不認為在面試時回答“我都是在做實際項目,但是對于概念都不太關心”的人真有能力把項目做好。老趙覺得將一些事物的概念理清之后,有些推論自然而然就得出了,想要“誤解”也很難。例如:“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文件。

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

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

  這就是“開發環境”與“運行環境”的宿命。

NET技術概念,依舊是概念……csproj文件是做什么用的?,轉載需保留來源!

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

主站蜘蛛池模板: 亚洲高清无在码在线电影 | 香蕉久久av一区二区三区 | 成人国产亚洲欧美成人综合网 | 成 人 动漫3d 在线看 | 福利社影院| 国产人妻人伦精品久久久 | 全黄h全肉细节文在线观看 全黄H全肉细节文短篇 | 久久高清免费视频 | 日本精品在线观看视频 | 国产午夜a理论毛片在线影院 | 在线免费观看毛片网站 | 色综合久久综合网观看 | 双性精跪趴灌满h室友4p | 欧美丰满少妇久久无码精品 | 肉小说高h | 翁熄性放纵交换300章 | 曰批视频免费40分钟不要钱 | 青青青青久久久久国产的 | 99久久精品国产国产毛片 | 国产成人拍精品免费视频爱情岛 | 和美女啪啪啪动态图 | 熟女少妇内射日韩亚洲 | 蜜桃麻豆WWW久久囤产精品免费 | 精品免费视在线视频观看 | rio 快播| 国产精品-区区久久久狼 | 亚欧成人毛片一区二区三区四区 | 国产真实夫妇交换视频 | 国产h视频在线观看网站免费 | 菠萝菠萝蜜视频在线看1 | 国产日韩精品一区二区在线观看 | 亚洲精品影院久久久久久 | 超碰最新地址 | 国产精品久久人妻拍拍水牛影视 | 成年视频xxxxxx在线 | 男人插女人动态 | 欧美三级aaa | 在线免费观看国产精品 | 久久婷五月综合色啪网 | 亚洲精品视频免费在线观看 | 冠希和阿娇13分钟在线视频 |