将 .net 核心 2.2 迁移到 3.1 问题
migrate .net core 2.2 to 3.1 issue
安装 .NET core SDK 3.1 并将我所有项目的 SDK [在我的解决方案中] 从 .NET core SDK 2.2 升级到 3.1,并将所有包(如扩展)更新到 3.1 版本后,我成功构建了所有项目我的解决方案。
但后来我得到了这个错误:
C:\Program
Files\dotnet\sdk.1.101\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(59,5):
error NETSDK1083: The specified RuntimeIdentifier 'win7-64' is not
recognized. C:\Program
Files\dotnet\sdk.1.101\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(59,5):
error NETSDK1083: The specified RuntimeIdentifier 'win7-86' is not
recognized.
这是我的 WebApi.csproj:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<RuntimeIdentifiers>win7-64;win7-86;ubuntu.16.04-x64;win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<LangVersion>7.1</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<NoWarn>1591</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<ItemGroup>
<None Remove="swagger.css" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="xxxxxx" Version="x.x.x" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xxxx.csproj" />
</ItemGroup>
</Project>
正如@Neil 所说
Remove the whole 'runtimeIdentifiers' section, you only need it if you are doing cross-platform work.
这样解决了我的问题。
安装 .NET core SDK 3.1 并将我所有项目的 SDK [在我的解决方案中] 从 .NET core SDK 2.2 升级到 3.1,并将所有包(如扩展)更新到 3.1 版本后,我成功构建了所有项目我的解决方案。
但后来我得到了这个错误:
C:\Program Files\dotnet\sdk.1.101\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(59,5): error NETSDK1083: The specified RuntimeIdentifier 'win7-64' is not recognized. C:\Program Files\dotnet\sdk.1.101\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(59,5): error NETSDK1083: The specified RuntimeIdentifier 'win7-86' is not recognized.
这是我的 WebApi.csproj:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<RuntimeIdentifiers>win7-64;win7-86;ubuntu.16.04-x64;win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<LangVersion>7.1</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<NoWarn>1591</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<ItemGroup>
<None Remove="swagger.css" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="xxxxxx" Version="x.x.x" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xxxx.csproj" />
</ItemGroup>
</Project>
正如@Neil 所说
Remove the whole 'runtimeIdentifiers' section, you only need it if you are doing cross-platform work.
这样解决了我的问题。