vs中如和根据项目生成类图_迁移WPF项目到.NET Core
綜述#
.NET CORE 3.0開(kāi)始,桌面端支持WPF了。很多.NET FRAMEWORK的項(xiàng)目已經(jīng)跑了一陣子了,不是很有必要支持.NET CORE,不過(guò)最近用一個(gè)程序,為了貫徹一些C# 8的特性,需要升級(jí)項(xiàng)目到.NET CORE 3.1。
方法#
參考官方指導(dǎo),需要這么幾步:
升級(jí)nuget引用#
原來(lái)的nuget使用packages.config進(jìn)行管理,.netcore已經(jīng)全面使用的形式,因此需要升級(jí)。
升級(jí)會(huì)彈出一個(gè)對(duì)話框提示,全部勾選上,直接升級(jí)。最后彈出一個(gè)升級(jí)報(bào)告。
.NET Framework移植分析#
VS擴(kuò)展市場(chǎng)查找并運(yùn)行.NET Portability Analyzer以分析項(xiàng)目。
報(bào)告如果分析結(jié)果是
這個(gè)樣子的,那就沒(méi)問(wèn)題。特別關(guān)注一下.NET CORE,如果不支持,需要想想別的辦法:
升級(jí)項(xiàng)目文件#
最關(guān)鍵的一步來(lái)了,需要升級(jí)項(xiàng)目文件以便于支持.NET CORE。其實(shí)步驟很簡(jiǎn)單,用vs生成一個(gè)基于.NET CORE的WPF項(xiàng)目,然后,直接將csproj文件拷貝到原來(lái)的項(xiàng)目文件夾,使用VS添加現(xiàn)有項(xiàng)目,選擇這個(gè)文件,可以發(fā)現(xiàn)原來(lái)的東西都自動(dòng)添加進(jìn)來(lái)了。
不過(guò)有的項(xiàng)不會(huì)自動(dòng)處理,我們還需要手動(dòng)對(duì)照一下原來(lái)的csproj文件和新的項(xiàng)目csproj文件。看看是不是缺失了一些什么內(nèi)容。
PackageReference不會(huì)自動(dòng)處理,引用的其他項(xiàng)目也不會(huì),我們需要手動(dòng)粘貼進(jìn)來(lái)。Resource也不會(huì)自動(dòng)添加,可以使用通配符語(yǔ)法程序的圖標(biāo)需要重新添加。
編譯之后出現(xiàn)這個(gè)錯(cuò)誤。
.NET CORE程序會(huì)自動(dòng)根據(jù)項(xiàng)目屬性生成這個(gè)信息,如果還有AssemblyInfo.cs文件,就會(huì)沖突。二選一解決這個(gè)問(wèn)題
- 刪除assemblyinfo.cs,不過(guò)原來(lái)的csproj文件將不可用。
- 在新項(xiàng)目文件中添加false,禁用自動(dòng)生成的功能。
修復(fù)生成問(wèn)題#
有的項(xiàng)目處理完畢之后還有生成錯(cuò)誤,可以考慮引用Microsoft.Windows.Compatibility來(lái)解決一些兼容性的問(wèn)題。
我的項(xiàng)目出現(xiàn)了很多警告,提示項(xiàng)目package不兼容。
如果包持續(xù)有人維護(hù)的話,一般情況重新安裝一下對(duì)應(yīng)的包解決這些問(wèn)題。
Copyupdate-package -reinstall還不行的話,那么有概率你的程序不能正常運(yùn)行。不想冒險(xiǎn),就需要找找替代了。比如我手頭上的程序,引用了CookComputing.XmlRpcV2這個(gè)包,不支持.NET CORE,但是在網(wǎng)上搜索一下,可以發(fā)現(xiàn)Kveer.XmlRPC是一個(gè)移植,直接換就好了。
繼續(xù)運(yùn)行,發(fā)現(xiàn)一直提示資源文件錯(cuò)誤,WPF的Properties.Resources不好用了...有幾種辦法可以解決。
總結(jié)#
最后編譯,我這邊只有幾個(gè)警告,沒(méi)有錯(cuò)誤了。鑒于程序可以正常運(yùn)行,我這有空再優(yōu)化吧。
總結(jié)
以上是生活随笔為你收集整理的vs中如和根据项目生成类图_迁移WPF项目到.NET Core的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 动词ing基本用法_百因必有果,你的“福
- 下一篇: asp.net ajax控件工具集 Au