如何将 .NET PCL 项目迁移到 .NET Standard 2.0

How to migrate a .NET PCL Project to .NET Standard 2.0

我有 PCL 和 .NET Core 1.0 项目的解决方案。 更新到 VS 2017 15.3 后,当我导航到项目属性时,我有一个 .NET Core 1.0 项目的 "Application" 页面,我可以在其中从 1.0 更改为 2.0。不幸的是,PCL 项目只显示标准 "Library" 页面,带有一个额外的 "Learn More" link 导航我到“.NET Standard”网页,但没有迁移到 .NET 的选项。净标准 2.0。其余的都是一样的,它只允许我改变通常的目标。没有提及与 .NET Standard 相关的任何其他内容。

我是否必须自己将项目重新创建为 .NET Standard 2.0?

对于pcl:

  • 创建 .Net 标准库项目

  • 手动修改csproj文件为Multi Target:

    假设你的pcl是:portable-net45+win8+wpa81+wp8

     <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
         <TargetFrameworks>netstandard2.0;portable-net45+win8+wpa81+wp8</TargetFrameworks>
       </PropertyGroup>
    

    注意 TargetFrameworks 不是 TargetFramework

  • 复制过去的来源

  • 安装nuget包,或者在csproj中手动引用,例如:

    <ItemGroup>
       <PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
    </ItemGroup>
    
  • 假设pcl编译没有错误,在netstandrd2中你可能会发现错误,根据需要修改你的源。

  • 修改单元测试项目并确保您在两个环境中都通过了所有测试。