如何在 Visual Studio 2019 中將 .NET Framework 4.7.2 項目遷移到 .NET Core 3.0
我有一個針對 .NET Framework 4.7.2 的 Windows 窗體應用程序。由於 .NET Core 3.0 支持 Windows 窗體,我想嘗試一下。有沒有辦法將 VS2019 項目從 .NET Framework 轉換為 .NET Core,或者唯一可能的方法是創建一個新的 .NET Core 項目並從舊項目添加文件?
我只詢問 VS 項目遷移,而不是任何潛在的不兼容問題。
$$ EDIT $$官方工具發布:try-convert 查看最新版本的發行版。
在官方工具發布之前,這裡有一些人提供了替代Migration-von-NET-Framework-zu-NET-Core-per-PowerShell 的連結
請按照以下步驟操作:
使用可移植性分析器
使用以下說明執行 Portability Analyzer。
1.執行 PortabilityAnalyzer.exe ( https://github.com/Microsoft/dotnet-apiport-ui/releases/download/1.1/PortabilityAnalyzer.zip )
2.在應用程序路徑文本框中輸入 Windows 窗體或 WPF 應用程序的目錄路徑(通過插入路徑字元串或點擊瀏覽按鈕並導航到文件夾)。
3.點擊分析按鈕。
4.分析完成後,一份關於您的應用程序現在對 .NET Core 3.0 的可移植性的報告將保存到您的光碟中。您可以通過點擊打開報告按鈕在 Excel 中打開它。
NET 可移植性分析器來確定您的應用程序所依賴的任何 API 是否從 .NET Core 中失去。如果有,您需要重構程式碼以避免依賴於 .NET Core 中不支持的 API。有時可以找到提供所需功能的替代 API。
移民
1.將**packages.config替換為PackageReference 。如果您的項目使用 NuGet 包,則需要將相同的 NuGet 包添加到新的 .NET Core 項目中。.NET Core 項目僅支持通過 PackageReference 添加 NuGet 包。要將 NuGet 引用從 packages.config 移動到項目文件,請在解決方案資源管理器中右鍵點擊 packages.config -> Migrate packages.config to PackageReference …..
2.遷移到 SDK 風格的 .csproj 文件。要將我的應用程序遷移到 .NET Core,首先我需要將項目文件更改為 SDK 樣式格式,因為舊格式不支持 .NET Core。此外,SDK 樣式的格式更精簡且更易於使用。確保您擁有目前 .csproj 文件的副本。將 .csproj 文件的內容替換為以下內容。
對於 WinForms 應用程序:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net472</TargetFramework> <UseWindowsForms>true</UseWindowsForms> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> </Project>對於 WPF 應用程序
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net472</TargetFramework> <UseWPF>true</UseWPF> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> </Project>3.從 .NET Framework 遷移到 .NET Standard 或 .NET Core。為此,請替換此
<TargetFramework>net472</TargetFramework>和
<TargetFramework>netstandard2.0</TargetFramework>或者
<TargetFramework>netcoreapp3.0</TargetFramework>4.在項目文件中複製舊項目中的所有外部引用,使用舊csproj文件relpace this找到proejct引用。例如:
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />到 .csproj 文件
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <UseWPF>true</UseWPF> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> </Project> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="9.0.1" /> </ItemGroup>