关于xamarin.ios:Xamarin.Forms:移至.NET Standard

Xamarin.Forms: Move to .NET Standard

我的Xamarin.Forms项目目标为PCL profile 259。最近,我读到了很多向.NET Standard迁移的信息,但是这样做很痛苦。

当前,我在Visual Studio 2015 Update 3中进行开发。但是很快将尝试VS2017。

我的解决方案包括:

  • 通用PCL库

  • Android特定项目

  • iOS特定项目

我的问题:

  • 如何将Profile 259转换为最新的.NET Standard?

  • 是否已经有Xamarin / Microsoft团队提供的官方转换向导指南?

  • 我的Xamarin.Forms Android和iOS应用程序是在VSTS中构建的。 VSTS是否支持.NET Standard,还是会导致构建错误?

  • 在此先感谢您提供任何好的解决方案。


    要将PCL更改为.NET Standard,只需转到PCL的"属性",然后选择" Target .NET Standard Platform"。

    enter image description here

    然后创建一个project.json文件(如果尚未为您创建一个文件)并插入以下内容。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
     "supports": {},
     "dependencies": {
       "NETStandard.Library":"1.6.0",
       "Xamarin.Forms":"2.3.4.192-pre2"
      },
     "frameworks": {
       "netstandard1.3": {
         "imports":"portable-net45+win8+wpa81"
        }
      }
    }

    您需要导入以允许添加非.NET Standard库。

    在VS 2017中,情况有所不同。尽管以上内容将继续起作用,但是您可以将完整的.NET Standard库用作csproj(不再是xproj),并使其与Xamarin一起愉快地工作。

    但是,没有自动转换(我知道),所以我通常要做的是编辑csproj并将其完全替换为以下内容。只需删除该文件中的所有内容,然后输入以下内容即可。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <Project Sdk="Microsoft.NET.Sdk">    
      <PropertyGroup>
        <TargetFramework>netstandard1.3</TargetFramework>
        <AssemblyName>MyLibraryName</AssemblyName>
        <PackageId>MyLibraryName</PackageId>
        <NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
        <PackageTargetFallback>$(PackageTargetFallback);portable-win+net45+wp8+win81+wpa8</PackageTargetFallback>
      </PropertyGroup>
    </Project>

    然后,您将不得不再次手动添加引用和NuGet软件包。对于PackageTargetFallback,此行类似于project.json中的导入。

    关于VSTS,我知道VS2015的第一种方法可以正常工作,就像我自己做的那样。 VS2017方法应该可以与VSTS一起使用,但是我还没有亲自尝试过。