.NET CORE 3.0開始,桌面端支持WPF了。不少.NET FRAMEWORK的項目已經跑了一陣子了,不是頗有必要支持.NET CORE,不過最近用一個程序,爲了貫徹一些C# 8的特性,須要升級項目到.NET CORE 3.1。html
參考官方指導,須要這麼幾步:shell
原來的nuget使用packages.config進行管理,.netcore已經全面使用<PackageReference>
的形式,所以須要升級。app
升級會彈出一個對話框提示,所有勾選上,直接升級。最後彈出一個升級報告。測試
VS擴展市場查找並運行.NET Portability Analyzer
以分析項目。
優化
報告若是分析結果是
這個樣子的,那就沒問題。特別關注一下.NET CORE,若是不支持,須要想一想別的辦法:.net
最關鍵的一步來了,須要升級項目文件以便於支持.NET CORE。其實步驟很簡單,用vs生成一個基於.NET CORE的WPF項目,而後,直接將csproj文件拷貝到原來的項目文件夾,使用VS添加現有項目,選擇這個文件,能夠發現原來的東西都自動添加進來了。3d
不過有的項不會自動處理,咱們還須要手動對照一下原來的csproj文件和新的項目csproj文件。看看是否是缺失了一些什麼內容。code
PackageReference不會自動處理,引用的其餘項目也不會,咱們須要手動粘貼進來。
Resource也不會自動添加,可使用通配符語法<Resource Include="Images\*.png" />
程序的圖標須要從新添加。htm
編譯以後出現這個錯誤。
.NET CORE程序會自動根據項目屬性生成這個信息,若是還有AssemblyInfo.cs文件,就會衝突。二選一解決這個問題blog
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
,禁用自動生成的功能。有的項目處理完畢以後還有生成錯誤,能夠考慮引用Microsoft.Windows.Compatibility
來解決一些兼容性的問題。
個人項目出現了不少警告,提示項目package不兼容。
若是包持續有人維護的話,通常狀況從新安裝一下對應的包解決這些問題。
update-package -reinstall
還不行的話,那麼有機率你的程序不能正常運行。不想冒險,就須要找找替代了。
好比我手頭上的程序,引用了CookComputing.XmlRpcV2
這個包,不支持.NET CORE,可是在網上搜索一下,能夠發現Kveer.XmlRPC
是一個移植,直接換就行了。
繼續運行,發現一直提示資源文件錯誤,WPF的Properties.Resources
很差用了...有幾種辦法能夠解決。
最後編譯,我這邊只有幾個警告,沒有錯誤了。鑑於程序能夠正常運行,我這有空再優化吧。