更新 net5.0 .csproj 到 net6.0
Updating net5.0 .csproj to net6.0
我当前的 .csproj 具有以下项目统计信息:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<UserSecretsId>aspnet-XYZ</UserSecretsId>
</PropertyGroup>
我的 ItemGroup
中也有几个条目表明 "Version="5.0.10"
。
因为我正在升级,所以我卸载了旧的 runtimes/frameworks 和
dotnet --list-runtimes
显示:
Microsoft.AspNetCore.App 3.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.21 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.21 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
手动更改项目条目未成功。
有没有办法将此项目指向新的 SDK 安装?
Visual Studio
如果您使用的是Visual Studio,您需要做的就是:
右键单击 solution explorer
中的项目,属性 > 应用程序 > 目标框架,然后选择 .NET 6.0
。 (目前,这仅适用于 VS 2022)
要更新您已安装的所有软件包:
右键单击 solution explorer
、Manage NuGet packages...
> Update
选项卡 > 选中 Select all packages
> 单击 Update
按钮。
手动
您需要做的就是像这样更改 .csproj
文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
...
</PropertyGroup>
...
</Project>
更多信息Migrate from ASP.NET Core 5.0 to 6.0
要更新您已安装的所有软件包,请使用此 PowerShell
脚本:
$regex = 'PackageReference Include="([^"]*)" Version="([^"]*)"'
ForEach ($file in get-childitem . -recurse | where {$_.extension -like "*proj"})
{
$packages = Get-Content $file.FullName |
select-string -pattern $regex -AllMatches |
ForEach-Object {$_.Matches} |
ForEach-Object {$_.Groups[1].Value.ToString()}|
sort -Unique
ForEach ($package in $packages)
{
write-host "Update $file package :$package" -foreground 'magenta'
$fullName = $file.FullName
iex "dotnet add $fullName package $package"
}
}
基于 Rolf Wessels's answer.
但我建议使用 dotnet-outdated 工具。
我当前的 .csproj 具有以下项目统计信息:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<UserSecretsId>aspnet-XYZ</UserSecretsId>
</PropertyGroup>
我的 ItemGroup
中也有几个条目表明 "Version="5.0.10"
。
因为我正在升级,所以我卸载了旧的 runtimes/frameworks 和
dotnet --list-runtimes
显示:
Microsoft.AspNetCore.App 3.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.21 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.21 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
手动更改项目条目未成功。
有没有办法将此项目指向新的 SDK 安装?
Visual Studio
如果您使用的是Visual Studio,您需要做的就是:
右键单击 solution explorer
中的项目,属性 > 应用程序 > 目标框架,然后选择 .NET 6.0
。 (目前,这仅适用于 VS 2022)
要更新您已安装的所有软件包:
右键单击 solution explorer
、Manage NuGet packages...
> Update
选项卡 > 选中 Select all packages
> 单击 Update
按钮。
手动
您需要做的就是像这样更改 .csproj
文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
...
</PropertyGroup>
...
</Project>
更多信息Migrate from ASP.NET Core 5.0 to 6.0
要更新您已安装的所有软件包,请使用此 PowerShell
脚本:
$regex = 'PackageReference Include="([^"]*)" Version="([^"]*)"'
ForEach ($file in get-childitem . -recurse | where {$_.extension -like "*proj"})
{
$packages = Get-Content $file.FullName |
select-string -pattern $regex -AllMatches |
ForEach-Object {$_.Matches} |
ForEach-Object {$_.Groups[1].Value.ToString()}|
sort -Unique
ForEach ($package in $packages)
{
write-host "Update $file package :$package" -foreground 'magenta'
$fullName = $file.FullName
iex "dotnet add $fullName package $package"
}
}
基于 Rolf Wessels's answer.
但我建议使用 dotnet-outdated 工具。