【笨問題專欄】啥? 原來Visual Studio可以Add As Link
我們在做專案時,在一個Solution中,常有多個專案共用Class的情形,例如: 在Service端定義了一組傳遞資訊的物件,在呼叫端也會用到、或是某個提供工具函數的類別,對多個專案來說都有用。此時,標準做法是另外建一個獨立的類別庫專案(Class Library),將要共用的類別放進去,多個專案再參照此一專案。
不過有很多時候只為了一個類別多搞出一個DLL,感覺上太過隆重,有時我會偷懶,只將.cs複製到另一個專案裡就算了。但只要是複製,就會衍生同步的問題,一旦要修改類別內容,必須同時修改多處,後患無窮。
在兩個做法間為難了好幾年,最近才發現自己是阿呆!
在Visual Studio裡,我們可以使用Add As Link的功能,只在專案裡建立連結,而不實際複製檔案過來,這樣子就可達到兩個專案共用檔案的理想囉!

如上圖,在專案加入現有檔案時使用"Add As Link",加入的檔案會呈現帶有連結箭頭的圖示(如下圖),表示專案並沒有將檔案複製過來,只是建立參照,檢視、修改時仍是原始來源的檔案,因此修改程式時對兩個專案來說是同步更新。

不過要留意,這個技巧是透過.csproj裡將檔案指向原檔案來源達成的,對於沒有.csproj的專案(例如: ASP.NET Web Site Project)來說並不適用。另外,要對多個專案共用類別做修改時,要格外小心維持相容性,避免為了A專案改程式,讓B, C, D專案全都壞透了光光...