DotNet 項目中連結檔案的用處
首先,什麼是連結檔案?
在VS.Net中開啟一個WinForm項目或者DLL項目(在Web項目中不能使用連結檔案,感謝dudu指出),在隨便一個項目中右擊滑鼠,選擇“添加”→“添加現有檔案”(抱歉,手頭的機器太差,沒有裝VS.Net,所有的操作說明全憑記憶,如果有出入敬請原諒),隨便選中一個檔案,不要選“開啟”,點擊“開啟”按鈕右側的下拉式功能表,選擇“連結檔案”;
選中的檔案已經添加到了你的項目中,但是這個檔案和你平常添加到項目中的檔案是不一樣,這僅僅是一個指向你所選擇檔案的連結,相當於一個捷徑;檔案在你指定添加的位置上是不存在的,但是你可以照樣地對這個檔案進行編輯、編譯等操作,和普通檔案地使用並沒有什麼不同;
連結檔案有什麼用處?我能想到的大概有這麼幾個:
1.給可執行檔項目進行單元測試;
由於被測試的項目必須是DLL,才能夠被NUnit單元測試項目引用而進行測試,因此如果你把邏輯代碼放到了可執行檔項目中,NUnit就無用武之地了;
這種情況下要進行單元測試,可以建立一個DLL項目,通過連結檔案把可執行檔下的所有檔案都進行連結,然後把NUnit單元測試項目的引用指向這個項目,這樣就可以用NUnit進行測試了;當你的可執行檔進行了修改的時候,“連結專案”的編譯結果也會是最新的。
2.引用其他可執行檔項目
如果你要在自己的項目中引用其他可執行檔項目中的代碼,除了將被引用項目的屬性臨時修改為DLL,編譯後再改回來,似乎沒有其他辦法了。
類似上面對可執行檔項目執行單元測試的情況,我們同樣可以使用連結檔案解決這個問題:建立一個引用被引用的可執行檔項目的DLL項目,將你自己的項目引用指向這個建立的DLL項目即可;
上面兩種情況,究其根本都是系統設計不當造成的,重構或者修改設計可以避免這種問題,但是實際中總是很難做到,用連結檔案作為補救措施總還算是一種比較好的亡羊補牢方式。
3.給一個解決方案中的項目統一版本資訊和簽名資訊
一個項目的版本資訊和簽名資訊是在該項目的Assembly.cs檔案中指定的,將所有的項目中的Assembly.cs檔案都連結至同一個檔案,以後只要修改這個Assembly.cs檔案中的內容,就可以保證所有項目的版本資訊和簽名資訊都是一致的。 NAnt 項目的 Build 過程就是這樣的。