.NETStandard Library Xamarin.Forms PCL Convert .NETStandard

如何將 Xamarin.Forms 的 PCL 專案轉換至 .NETStandard 2.0...

James Tsai 2018/07/30 17:55:54
867
 

1. 前言

 
 
     .NETStandard 2.0 已經推出一段時日,比起 .NETStandard 1.x 的時候已經相對來說穩定,且大致的規格與定義也都底定,所以目前內建在 Visaul Studio 2017 or Visual Studio for Mac 所建立的 Xamarin.Forms 專案也預設皆採用 .NETStandard 2.0 的專案為共用程式碼的方式。但問題在於,過去是使用 PCL 專案的舊專案該怎麼辦呢? 該轉換到 .NETStandard 2.0 上嗎? 答案是,需要。因為逐漸地有些 Nuget 套件開始不支援使用 PCL 只支援 .NETStandard 的方式使用,將會無法繼續升級使用該 Nuget 套件。而目前並沒有"官方"的工具讓舊有的 PCL 專案轉換至 .NETStandard 2.0 上,本文章將介紹該採哪些步驟,讓 PCL 專案轉換至 .NET Standard 2.0 上。
 
 
 

2. 內文

 
 
  • 首先,要先有一個內含 PCL 專案的 Xamarin.Forms 方案。(隨著時間的演進,應該會越來越少遇到。)
 
 
 
 
 
  • 卸載該 PCL 專案。
 
 
 
 
 
  • 編輯 .csproj 檔案。
 
 
 
 
 
  • Project 標記內的文字 「全選」。
 
 
 
 
 
  • 直接「刪除」。
 
 
 
 
 
  • 加入下圖紅色框中的標記文字
 
 
 
 
 
  • 利用其他的文字編輯器,到該 PCL 專案底下,打開「packages.config」檔案,注意當中的 package 標記用到了那些 package 的 id 跟 version。
 
 
 
 
 
  • 回到剛剛的 csproj 檔,新增 PackageReference,在上一個步驟的 package 有什麼就增加一樣的 PackageReference,其中的屬性改為 Include 跟 Version,如下圖的紅色框。
 
 
 
 
 
  • 重新載入專案。
 
 
 
 
 
  • 是。
 
 
 
 
 
  • 複選專案中的 Properties 與 packages.config 檔案。
 
 
 
 
 
  • 刪除。
 
 
 
 
 
  • 確定。
 
 
 
 
 
  • 移轉完成。
 
 
 
 
 
  • 到 Android 專案中,點選「參考」並且選擇「移轉」。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 到 iOS 專案中,點選「參考」並且選擇「移轉」。
 
 
 
 
 
 
 
 
 
 
 
  • 在方案中,選擇「管理方案的 Nuget 套件」,因為剛剛在 PackageReference 中,升級了 Xamarin.Forms 的套件版本,所以需要再「合併」各專案的套件版本。
 
 
 
 
 
  • 安裝最新版的 Xamarin.Forms 套件。
 
 
 
 
 
  • 清除方案。
 
 
 
 
 
  • 重建方案。
 
 
 
 
 
  • 建置成功,從 PCL 升級至 .NETStandard 2.0 完成。
 
 
 
 

3. 結語

 
 
     以上步驟,是簡單地闡述了如何將 PCL 專案轉換到 .NETStandard 2.0 的專案上,大致上 Xamarin.Forms 的程式碼撰寫方式幾乎都不變,只有有遇到所使用的第三方 Nuget 套件出現一些特殊的相容性問題,這部分就須再進一步的另外處理與解決了。
 
James Tsai