2014/10/29

[筆記] 讓不同平台的專案共用同一個元件專案 (使用 Add as Link 共用 Class 檔)

最近在開發的 Windows Store App 要使用現有的 .Net 元件以及現有的 WebService

但實際要把元件的 Source Code 加入參考時visual studio 卻很不客氣的給我了這個訊息




好吧,....

畢竟 Windows Store App 的底層是 Windows Runtime (WinRT),跟 .Net  for Store Apps

並不是 .Net Framework

兩者都可以用 C#/VB 寫出來,但就跟學外文一樣明明都是豆芽字但完全不是同一個東西...

Google 之後發現! 可以用 Portable Class Library 來解決

看似一切都非常美好

but  !!

人蔘就是這個 but !!!

把元件改成 PCL 專案之後,很多原本的 library 也不一樣了

最明顯就是不支援  XmlDocument, 而且也沒有 System.Web 這個命名空間

而且要用到的 Json.Net 也是得取 Portable 版,跟原本的 100%不會相容,所以也不能直接蓋

為了 Store App 只好改掉了,但改了就跟原本專案要參考的元件不一樣了

(而且通常都是沒有時間讓原本的專案也升級成可以支援新的 library ...)

但只做了 1%左右的異動,卻要在 svn 上維護兩邊的 source

想到之後舊案子對元件進行擴充就得 merge 來新專案之類的,實在是頭痛

後來參考了一下公司內之前的高手前輩留下來的  source code,

發現可以在不同的專案之間參考同一個實體的 .cs 檔,立馬來研究

那個功能叫做 Add as Link

開好新的 PCL 專案,拉好該參考的參考之後,在專案案右鍵選 加入 -> 現有項目

瀏覽到原本的元件專案選好要加入的檔案之後

點下加入旁邊的 ▼




就可以不 Copy 檔案到新的目錄也可以使用同一顆 .cs 了

注意 Link 的檔案圖示會稍微不一樣,除了會寫明這是 C# or VB Class 之外,還會多一個藍色的箭頭圖案 (2013下是藍色的)


















沒有留言:

張貼留言