我們在做專案時,在一個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專案全都壞透了光光...


Comments

# by Chui-Wen Chiu

我都升級到 vs2010 還不知道有這個功能 學習了 ~

# by Jackal H

讚讚讚 又學了一招

# by Leo

我也不知道這個功能 ^^|| 但是不小心,很容易就【壞透】了啊 :P

# by

水喔,之前都是自己去編輯.csproj 檔案 Orz

# by david.net

喔喔喔喔~~ 原來還有這一招~~~ 可惜沒辦法用在ASP.NET Web Site Project~~ 多謝~~

# by sam319

剛試一下asp.net mvc可以用耶~good!

# by zenoguo

只能說 這功能隱藏的很好

# by Joshua Liu

真棒,在這裡學到不少技巧,看的出站長的用心, 現在我也知道Visual Studio,這個小技巧了,感謝站長的分享.

# by Derting

Thanks :D

Post a comment