前面【Visual Studio 2017创制.net
standard类库编译出错原因
】已经解决.net
standard类库的编译问题,现在得以规范进入正题了。作为.net
跨平台开发者也得跟上一代,响应微软转移。微软正在开发.net standard
2.0的本子,听说将是最全的API库,那时最近应用的pcl类库将会被替代。考虑到将来的变更,所以打算从先天开班新建xamarin项目标时候就去PCL化,全体.net
standard 化。

是因为2.0还从未标准宣布,xamarin也还尚未更新它的沙盘库来帮助.net
standard ,所以重重都得手动设置。

先是步:创制普通的Prism.Xamarin项目

json 1

json 2

 

第二步:更改PCL类库为标准类库。

1,VS2015就一些老方法,通过项目属性页的链接按钮更改。

json 3

会提示如下错误:

json 4

这儿不得不删除所有Nuget包再开展操作,操作截至后再添回Nuget包。

json 5

改换成功后默认会带有Microsoft.NETCore.Portable.Compatibility包,应该删除。

编写project.json文件,添加如下设置,否则不能添加Xamarin等Nuget包:

{
  "supports": {},
  "dependencies": {
    "NETStandard.Library": "1.6.1"
  },
  "frameworks": {
    "netstandard1.4": {

“imports”:
“portable-net45+net45+wp8+win81+wpa8”

    }
  }
}

备注

Xamarin.Forms使用正规版2.3.3.193足以编译通过。

类库属性:

json 6

 

2,直接开立新的.net
standard类库,移植PCL内容。

json 7

备注:记得更改地点,不然文件夹不和ios.uwp,droid项目在同级目录。

json 8

在.csproj文件中添加如下设置:

 

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
    <PackageTargetFallback>$(PackageTargetFallback);portable-win+net45+wp8+win81+wpa8</PackageTargetFallback>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Prism.Unity.Forms" Version="6.3.0" />
    <PackageReference Include="Xamarin.Forms" Version="2.3.4.221-pre6" />
  </ItemGroup>

</Project>

 

再一次加载项目,把PCL类库的文书全体托过来,编译项目。

类库属性:

json 9

备注1:

Xamarin.Forms如若运用正规版2.3.3.193,编译会出XamlCTask错误。

json 10

Google的结果,这是一个Xamarin的Bug,beta-2.3.4-pre4版本已经更正了。

https://bugzilla.xamarin.com/show_bug.cgi?id=53060

json 11

升级到beta-2.3.4-pre6编译成功。

json 12

 追加:

2017/4/5 Xamarin.Forms 2.3.4
正式版Release,用时尚版应该不会有以上问题。

https://blog.xamarin.com/announcing-xamarin-forms-stable-release-2-3-4/

 

备注2:

UWP项目的Microsoft.NETCore.UniversalWindowsPlatform为5.1.0本猴时将会并发如下错误:

System.Reflection.Emit.ILGeneration 4.3.0 为 UAP,Version=v10.0 上的
System.Reflection.Emit.ILGeneration 提供了编译时引用程序集,但不曾与
win10-arm-aot 兼容的周转时先后集。
一个或两个包与 UAP,Version=v10.0 (win10-arm-aot) 不包容。
System.Reflection.Emit.ILGeneration 4.3.0 为 UAP,Version=v10.0 上的
System.Reflection.Emit.ILGeneration 提供了编译时引用程序集,但没有与
win10-x64-aot 兼容的运转时先后集。
一个或六个包与 UAP,Version=v10.0 (win10-x64-aot) 不般配。
System.Reflection.Emit.ILGeneration 4.3.0 为 UAP,Version=v10.0 上的
System.Reflection.Emit.ILGeneration 提供了编译时引用程序集,但绝非与
win10-x86-aot 兼容的运行时先后集。
一个或四个包与 UAP,Version=v10.0 (win10-x86-aot) 不匹配。

json 13

晋级到最新5.3.1编译将没问题。

json 14

 

相互分别

方法一:

  • project.json进行包管理
  • 属性页无复杂设置。

方法二:

  • .csproj文件举办包管理。
  • 属性页可以展开启动对象等众多装置。

介于有那个区别,更加应该运用VS2017的.net
standard模板创立类库,以应对将来的成形。

相关文章

网站地图xml地图