standard类库编写翻译出错原因,有上述错误

前面【Visual Studio 2017创设.net
standard类库编写翻译出错原因
】已经消除.net
standard类库的编写翻译难点,今后能够正式进入正题了。作为.net
跨平台开发者也得跟上时期,响应微软变化。微软正在开发.net standard
2.0的本子,听大人讲将是最全的API库,这时近年来使用的pcl类库将会被取代。考虑到今后的更动,所以打算从以后起来新建xamarin项目标时候就去PCL化,全部.net
standard 化。

在【Xamarin+Prism小规模试制牛刀:定制跨平台Outlook邮箱应用】中提到过以下错误,不知晓大家还记得不:

是因为2.0还没有正经宣布,xamarin也还未曾立异它的模板库来援助.net
standard ,所以众多都得手动设置。

  • style=”font-size: small; color: #0000ff”>不大概安装程序包“Microsoft.Identity.Client
    1.0.304142221-阿尔法”。你正在尝试将此程序包安装到对象为“.NETPortable,Version=v4.5,Profile=Profile111”的花色中,但该程序包不分包其余与该框架包容的程序集引用或内容文件。有关详细新闻,请联系程序包我。*

率先步:制造普通的Prism.Xamarin项目

岂然而Microsoft.Identity.Client
有以上错误,有名的条形码二维码类库ZXing.Net.Mobile等也只援助Profile7。那Profile是怎么着?Profile111又是怎么着了?后天逐一为您揭秘。

图片 1

PCL (Portable Class
Library)

图片 2

PCL是跨平台代码共享的一种设计艺术,简称可移植类库。Xamarin.Adroid,Xamarin.iOS.UWP都得以平昔参照调用。重借使将平台毫无干系的政工代码创立为PCL类库,可是随着MVVM框架的风靡,Xamarin.Forms已经将View,ViewModel,Model都移植到了PCL类库,部分平台正视相比较强就分平台达成。

 

Profile

其次步:更改PCL类库为正式类库。

PCL类库对应的平台聚集分歧等,对应的Profile版本也不平等。如若自定义的PCL类库与Nuge上PCL包的Profile不均等,将造成开题的荒谬不或然安装。

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

图片 3

图片 4

诸如上图PCL类库的对象集合对应的Profile如下(.csproj工程文件):

会提醒如下错误:

图片 5

图片 6

全副的Profile版本如下:

此时不得不删除全体Nuget包再拓展操作,操作停止后再添回Nuget包。

图片 7

图片 8

.NET 4.5当下对应的Profile为7,49,78,111,259.
方可查阅本地目录【C:\Program Files (x86)\Reference
Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile】都有这一个版本。

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

图片 9

编写制定project.json文件,添加如下设置,不然不大概添加Xamarin等Nuget包:

切实的相应关系如下表:(Visual Studio 二零一五 Update3/Windows10环境)

{
  "supports": {},
  "dependencies": {
    "NETStandard.Library": "1.6.1"
  },
  "frameworks": {
    "netstandard1.4": {
Profile VS目标设置 对应平台
Profile7
  • .NET 4.5
  • Windows 8 (含UWP)
  • Windows Store apps (Windows 8)
  • Xamarin.Android
  • Xamarin.iOS Classic
  • Xamarin.iOS Unified
  • Asp.NET core1.0
Profile49
  • NET 4.5
  • Windows Phone 8 or later
  • Windows Phone Sliverlight 8
  • Xamarin.Android
  • Xamarin.iOS Classic
  • Xamarin.iOS Unified
  • Asp.NET core1.0
Profile78
  • .NET 4.5
  • Windows Phone 8 or later
  • Windows 8(含UWP)
  • Windows Phone Sliverlight 8
  • Windows Store apps (Windows 8)
  • Xamarin.Android
  • Xamarin.iOS Classic
  • Xamarin.iOS Unified
  • Asp.NET core1.0
Profile111
  • NET 4.5
  • Windows Phone 8.1 or later
  • Windows 8(含UWP)
  • Xamarin.Android
  • Xamarin.iOS Classic
  • Xamarin.iOS Unified
  • Asp.NET core1.0
Profile259
  • .NET 4.5
  • Windows Phone 8.1 or later
  • Windows 8(含UWP)
  • Windows Phone Sliverlight 8
  • Windows Store apps (Windows 8)
  • Xamarin.Android
  • Xamarin.iOS Classic
  • Xamarin.iOS Unified
  • Asp.NET core1.0

没有System.Net.Http

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

Xamarin.Forms for Windows 开发的时候最棒是运用Profile 7, 111, 259 。

    }
  }
}

Xamarin.Forms for UWP 开发的时候最佳是应用Profile 111。

备注

【备注】

Xamarin.Forms使用专业版2.3.3.193方可编写翻译通过。

Profile259没有System.Net.Http库,得设置微软的System.Net.Http包。近来风靡的Http操作类库RestSharep也在招收PCL与UWP自愿者!

类库属性:

 

图片 10

仰望今后我们境遇不能够安装包的时候能够自然的缓解了!

 

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

图片 11

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

图片 12

在.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类库的文书全部托过来,编写翻译项目。

类库属性:

图片 13

备注1:

Xamarin.Forms即使利用正规版2.3.3.193,编写翻译会出XamlCTask错误。

图片 14

谷歌(Google)的结果,那是一个Xamarin的Bug,beta-2.3.4-pre4本子现已校订了。

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

图片 15

晋级到beta-2.3.4-pre6编写翻译成功。

图片 16

 追加:

2017/十分之八 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 包容的运行时先后集。
3个或四个包与 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 包容的运作时先后集。
3个或多个包与 UAP,Version=v10.0 (win10-x86-aot) 不包容。

图片 17

升级到新型5.3.1编写翻译将没难题。

图片 18

 

互相分别

方法一:

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

方法二:

  • .csproj文件举行李包裹管理。
  • 属性页能够拓展运维对象等居多装置。

介于有这么些区别,越发应该选拔VS2017的.net
standard模板成立类库,以应对现在的转变。

相关文章