如何將Winform移植到.NET Core 3.0
參考將現(xiàn)有應(yīng)用程序移植到.NET Core 3.0
環(huán)境
首先要下載.NET Core 3.0 與Visual Studio 2019
編輯 csproj 文件
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <UseWindowsForms>true</UseWindowsForms> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> </Project>
恢復(fù) NuGet 包
找到package.config文件右擊選擇Upgrade to PackageReference 但是我會(huì)彈框
我也不知道該怎么解決,搜了一圈沒(méi)搜到,如果有知道的可以在評(píng)論區(qū)告訴我,于是我就老老實(shí)實(shí)將
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="Dapper" version="1.50.2" targetFramework="net45" /> <package id="EntityFramework" version="6.0.0" targetFramework="net45" /> <package id="MySql.Data" version="6.7.9" targetFramework="net45" /> <package id="System.Data.SQLite" version="1.0.108.0" targetFramework="net45" /> <package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net45" /> <package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net45" /> <package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net45" /> </packages>
改為下列代碼,并寫(xiě)到csproj文件中在 project的子節(jié)點(diǎn)中
<ItemGroup> <PackageReference Include="Dapper" Version="1.50.2" /> <PackageReference Include="EntityFramework" Version="6.0.0" /> <PackageReference Include="MySql.Data" Version="6.7.9" /> <PackageReference Include="System.Data.SQLite" Version="1.0.108.0" /> <PackageReference Include="System.Data.SQLite.Core" Version="1.0.108.0" /> <PackageReference Include="System.Data.SQLite.EF6" Version="1.0.108.0" /> <PackageReference Include="System.Data.SQLite.Linq" Version="1.0.108.0" /> </ItemGroup>
增加引用
同時(shí),有些dll是 .net framework獨(dú)有,而 .net core因?yàn)楦鞣N原因并沒(méi)有引用進(jìn)來(lái)的。參考Porting to .NET Core。如以下幾個(gè)是需要重新引用的:
- System.Data。雖然基礎(chǔ)層已經(jīng)是 .NET Core的一部分,即提供者模型和SQL客戶(hù)端,但目前還沒(méi)有一些功能,例如架構(gòu)支持和DataTable/ DataSet。
- System.DirectoryServices。.NET Core目前不支持與LDAP或Active Directory通信。
- System.Drawing。雖然嚴(yán)格來(lái)說(shuō)它是客戶(hù)端API,但許多開(kāi)發(fā)人員在服務(wù)器上使用繪圖API來(lái)提供縮略圖生成或水印。我們目前在 .NET Core中不支持這些API。
- System.Transactions。雖然ADO.NET支持事務(wù),但不支持分布式事務(wù),其中包括環(huán)境事務(wù)和登記的概念。
- System.Xml.Xsl和System.Xml.Schema。.NET Core支持XmlDocumentLinq XDocument,包括XPath。但是,目前不支持XSD(XmlSchema)或XSLT(XslTransform)。
- System.Net.Mail。目前不支持使用這些API從 .NET Core發(fā)送電子郵件。
- System.IO.Ports。.NET Core目前不包括與串行端口通信的功能。
- System.Workflow。Windows Workflow Foundation(WF)目前在 .NET Core上不可用。
- System.Xaml。在創(chuàng)建UWP應(yīng)用程序時(shí),開(kāi)發(fā)人員將使用WinRT XAML API。因此,.NET Core目前不包含托管XAML框架,該框架包括解析XAML文檔和實(shí)例化描述的對(duì)象圖的能力。
在我的項(xiàng)目中,我引用了這些:
<ItemGroup> <Reference Include="System.Data"/> <Reference Include="System.Xaml"/> <Reference Include="System.Transactions"/> <Reference Include="System.Drawing"/> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Net.Http" /> </ItemGroup>
增加其他文件
增加了如下幾個(gè)項(xiàng)目本身就有的文件
<ItemGroup> <None Include="App_Data\data.db" /> <None Include="packages.config" /> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> </ItemGroup> <ItemGroup> <None Include="App.config"> <SubType>Designer</SubType> </None> </ItemGroup>
最終的csproj文件
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <UseWindowsForms>true</UseWindowsForms> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> <ItemGroup> <PackageReference Include="Dapper" Version="1.50.2" /> <PackageReference Include="EntityFramework" Version="6.0.0" /> <PackageReference Include="MySql.Data" Version="6.7.9" /> <PackageReference Include="System.Data.SQLite" Version="1.0.108.0" /> <PackageReference Include="System.Data.SQLite.Core" Version="1.0.108.0" /> <PackageReference Include="System.Data.SQLite.EF6" Version="1.0.108.0" /> <PackageReference Include="System.Data.SQLite.Linq" Version="1.0.108.0" /> </ItemGroup> <ItemGroup> <Reference Include="System.Data"/> <Reference Include="System.Xaml"/> <Reference Include="System.Transactions"/> <Reference Include="System.Drawing"/> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Net.Http" /> </ItemGroup> <ItemGroup> <None Include="App_Data\data.db" /> <None Include="packages.config" /> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> </ItemGroup> <ItemGroup> <None Include="App.config"> <SubType>Designer</SubType> </None> </ItemGroup> </Project>
移植過(guò)程中遇到的問(wèn)題
.net core不支持Access數(shù)據(jù)庫(kù)
我的代碼中有帶Access數(shù)據(jù)庫(kù)相關(guān)代碼,都報(bào)了缺少程序集引用的錯(cuò)誤,因此我初步增加了引用
<ItemGroup> <Reference Include="System.Data"/> <Reference Include="System.Data.OleDb"/> </ItemGroup>
但是還是沒(méi)用,參考了.NET Core Data Access,發(fā)現(xiàn)是.net core不支持Access的原因,因此都把這段代碼用條件編譯代碼 #if 給包起來(lái)了。
缺少hostfxr.dll文件
編譯成功后運(yùn)行項(xiàng)目發(fā)現(xiàn)彈這個(gè)窗口,我查了下C:\Program Files\dotnet文件中是存在hostfxr.dll的,看了環(huán)境變量也是手動(dòng)設(shè)置了DOTNET_ROOT變量的,但是總是出錯(cuò),沒(méi)辦法,最后通過(guò)復(fù)制hostfxr.dll文件到bin\Debug\netcoreapp3.0\下才運(yùn)行成功
到此這篇關(guān)于如何將Winform移植到.NET Core 3.0的文章就介紹到這了,更多相關(guān)Winform移植到.NET Core 3.0內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 快速解決Android平臺(tái)移植ffmpeg的一些問(wèn)題
- 將Linux代碼移植到Windows的簡(jiǎn)單方法
- 一個(gè)簡(jiǎn)單的實(shí)現(xiàn)下拉框多選的插件可移植性比較好
- 把項(xiàng)目從Python2.x移植到Python3.x的經(jīng)驗(yàn)總結(jié)
- 將MySQL數(shù)據(jù)庫(kù)移植為PostgreSQL
- java 發(fā)送郵件的實(shí)例代碼(可移植)
- mysql數(shù)據(jù)庫(kù)從服務(wù)器移植到個(gè)人PC的方法
- 將Access數(shù)據(jù)庫(kù)移植到SQL Server
- Linux系統(tǒng)下移植busybox中mkfs.vfat命令
- 移植busybox構(gòu)建最小根文件系統(tǒng)的步驟詳解
相關(guān)文章
asp.net讀取excel中的數(shù)據(jù)并綁定在gridview
這篇文章主要介紹了asp.net讀取excel中的數(shù)據(jù)并綁定在gridview上的方法,需要的朋友可以參考下2014-02-02在運(yùn)行時(shí)編輯代碼的 .NET 熱重載的操作方法
今天通過(guò)本文給大家分享 Visual Studio 2019 中 16.11(預(yù)覽版1)中的 .NET 熱重載(通過(guò) .NET 6(預(yù)覽版4)中的 dotnet watch 命令行工具),介紹什么是 .NET 熱重載,如何使用這個(gè)特征,感興趣的朋友跟隨小編一起學(xué)習(xí)下吧2021-07-07.Net基于Thread實(shí)現(xiàn)自旋鎖的三種方式
本文主要講解.Net基于Thread實(shí)現(xiàn)自旋鎖的三種方式,基于Test--And--Set原子操作實(shí)現(xiàn),包含優(yōu)缺點(diǎn)介紹,感興趣的朋友跟隨小編一起看看吧2021-06-06asp.net微信開(kāi)發(fā)(高級(jí)群發(fā)文本)
這篇文章主要介紹了asp.net微信開(kāi)發(fā)中有關(guān)高級(jí)群發(fā)文本的相關(guān)內(nèi)容,需要的朋友可以參考下2015-11-11動(dòng)態(tài)指定任意類(lèi)型的ObjectDataSource對(duì)象的查詢(xún)參數(shù)
我在使用ObjectDataSource控件在ASP.NET中實(shí)現(xiàn)Ajax真分頁(yè) 一文中詳細(xì)介紹過(guò)如何使用ObjectDataSource和ListView實(shí)現(xiàn)數(shù)據(jù)綁定和分頁(yè)功能。事實(shí)上,采用ObjectDataSource和ListView相結(jié)合,可以減少我們很多的開(kāi)發(fā)任務(wù)。2009-11-11ASP.NET Core自動(dòng)生成小寫(xiě)破折號(hào)路由的實(shí)現(xiàn)方法
這篇文章主要介紹了ASP.NET Core自動(dòng)生成小寫(xiě)破折號(hào)路由的實(shí)現(xiàn)方法,幫助大家更好的理解和學(xué)習(xí)使用ASP.NET Core,感興趣的朋友可以了解下2021-04-04解決Asp.net Mvc返回JsonResult中DateTime類(lèi)型數(shù)據(jù)格式問(wèn)題的方法
這篇文章主要介紹了解決Asp.net Mvc返回JsonResult中DateTime類(lèi)型數(shù)據(jù)格式問(wèn)題的方法,需要的朋友可以參考下2016-06-06