Xamarin.Forms: Move to .NET Standard
我的Xamarin.Forms项目目标为
当前,我在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"。
然后创建一个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一起使用,但是我还没有亲自尝试过。