您需要在项目中定位多个框架;
- 右键单击项目名称,然后单击“编辑 .cproj 文件”
- 将 (s) 添加到目标框架标签,使其变为
<TargetFrameworks>...</TargetFrameworks>
- 指定您的目标框架(所有版本请参见docs):
<TargetFrameworks>net472;net48;netcoreapp2.0;netcoreapp2.1;netcoreapp2.2</TargetFrameworks>
- 如果您的库有任何引用,您需要手动指定每个版本的所有引用:
<ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">
<Reference Include="System.Net" />
</ItemGroup>
或为多个版本指定参考:
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.0' || '$(TargetFramework)' == 'netcoreapp2.1' || '$(TargetFramework)' == 'netcoreapp2.2' ">
<PackageReference Include="Microsoft.AspNetCore.Mvc.TagHelpers" Version="1.0.0" />
</ItemGroup>
或为所有目标框架指定包引用:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Localization" Version="1.0.0" />
</ItemGroup>
您可以指定所需的最低版本,框架将安装最新的兼容版本。例如下面我们将本地化包最小版本指定为 1.0.0,但是当它安装在 .Net Core 2.2 上时,它将安装最新的兼容版本,有关版本控制的更多详细信息,请参阅version ranges and wild chars
- 最后但并非最不重要的;在您的代码中,您需要检查目标框架的特定情况,您需要在每个版本中使用兼容的代码行。
例如,要获取文化信息,您需要为不同的 .Net Core 版本指定不同的代码:
#if NETCOREAPP1_0
var culture = new CultureInfo("en-US");
#else
var culture = CultureInfo.GetCultureInfo("en-US");
#endif
_logger.LogInformation($"{culture.Name}");
如果您使用的是 Visual Studio,您将看到所有目标框架的下拉导航,您可以使用它在目标框架之间切换并检查您的代码兼容性。