Xamarin.forms Xamarin.形式:PCL->。Net标准升级

Xamarin.forms Xamarin.形式:PCL->。Net标准升级,xamarin.forms,portable-class-library,.net-standard,Xamarin.forms,Portable Class Library,.net Standard,我的应用程序快完成了。我正在使用Xamarin.Forms(用于共享代码的PCL项目)。将PCL转换为.Net标准有什么好处吗?我读过一些文章,但仍然不能100%确定升级是否有任何好处,例如安全性、性能还是更像更丰富的API?谢谢您的建议。在安全性或性能方面没有直接的改进,但随着时间的推移,.NET标准将取代PCL。PCL并不像标准产品那样跨平台,因此要使其真正跨平台,切换到标准产品是明智之举 此外,许多NuGet软件包已经开始转换为支持标准,并且您的PCL库中不会收到该代码的任何升级。回到安全

我的应用程序快完成了。我正在使用Xamarin.Forms(用于共享代码的PCL项目)。将PCL转换为.Net标准有什么好处吗?我读过一些文章,但仍然不能100%确定升级是否有任何好处,例如安全性、性能还是更像更丰富的API?谢谢您的建议。

在安全性或性能方面没有直接的改进,但随着时间的推移,.NET标准将取代PCL。PCL并不像标准产品那样跨平台,因此要使其真正跨平台,切换到标准产品是明智之举

此外,许多NuGet软件包已经开始转换为支持标准,并且您的PCL库中不会收到该代码的任何升级。回到安全和性能部分;如果在NuGet软件包中发现错误,您将不会收到包含修复程序的更新,因为您仍然使用“较旧”的PCL技术。这有点牵强,但是如果你想成为未来的证明,那么切换到.NET标准是强制性的

现在我们有点麻烦了。您不能从PCL引用标准,反之亦然(并非所有场景都100%确定,但我认为您不能)。因此,现在您必须仔细检查您使用的所有NuGet是否已经有了.NET标准版本。如果不是,如果没有NuGet你就做不到,你就被卡在PCL上了。NuGet的创建者可以在一个NuGet中提供PCL和.NET标准版本,因此您可以从一个版本过渡到另一个版本。但是看看你正在使用的所有插件是否都是这样


实际上,Adam Pedley在这方面发表了一篇很好的文章。

实际上,您可以从.netstandard引用PCL,反之亦然,但这取决于netstandard版本和PCL配置文件。请参阅以了解在您的情况下可能发生的情况

要从PCL移动到netstandard,请执行以下操作:
1。将*.csproj内容替换为以下内容:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.1</TargetFramework>
    <PackageTargetFallback>$(PackageTargetFallback);portable45-net45+win81+wpa8</PackageTargetFallback>
    <Copyright>Copyright ©  2018</Copyright>
  </PropertyGroup>
  <ItemGroup>
    <Folder Include="Properties\" />
  </ItemGroup>
</Project>

netstandard1.1
$(PackageTargetFallback);便携式45-net45+win81+wpa8
版权所有©2018

2。如果要添加对PCL库的引用,可以添加PackageTargetFallback标记。您还可以编辑所需的值。在上面的示例中,我使用“portable45-net45+win81+wpa8”在netstandard1.1库中添加PCL(Profile111)。
3。使用netstandard版本。将信息从“AssemblyInfo.cs”复制到项目设置(属性->程序包)并删除它,因为您不再需要它。
4。从“packages.config”文件手动安装回nuget软件包,并扫描旧的*.csproj文件以查找对项目的引用。再加上它们。然后您还可以删除“packages.config”文件


我在VS2017 15.7.5上试过了。我发现如果为Xamarin.Forms(Android+iOS)开发,最好使用netstandard1.1和profile111。在这种情况下,您仍然可以使用旧的.NETPortable nuget软件包(即使它们还不支持netstandard)。

从PCL升级到.NET标准时是否会出现任何限制或异常?如果“nuget软件包”还不支持.NET标准,该怎么办?这是否意味着你将无法使用该软件包?谢谢@Gerald。这篇博文也解释了。谢谢!如果它对@Pablo有帮助,请接受它