Xamarin+Prism开发之.net standard化

前面【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项目

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

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

会提示如下错误:

这时候只能删除全部Nuget包再进行操作,操作结束后再添回Nuget包。

转换成功后默认会带有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可以编译通过。

类库属性:

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

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

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


    netstandard1.4
    $(PackageTargetFallback);portable-win+net45+wp8+win81+wpa8

重新加载项目,把PCL类库的文件全部托过来,编译项目。

类库属性:

备注1:

Xamarin.Forms如果使用正式版2.3.3.193,编译会出XamlCTask错误。

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

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

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

备注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) 不兼容。

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

两者区别

方法一:

  • project.json进行包管理

  • 属性页无复杂设置。

方法二:

  • .csproj文件进行包管理。

  • 属性页可以进行启动对象等很多设置。

介于有这些区别,更加应该使用VS2017的.net standard模板创建类库,以应对未来的变化。

时间: 2024-11-05 12:27:07

Xamarin+Prism开发之.net standard化的相关文章

Android插件化开发之Hook StartActivity方法

第一步.先爆项目demo照片,代码不多,不要怕 第二步.应该知道Java反射相关知识 如果不知道或者忘记的小伙伴请猛搓这里,Android插件化开发基础之Java反射机制研究 http://blog.csdn.net/u011068702/article/details/49863931 第三步.应该知道Java静态代理知识 如果不知道或者忘记的小伙伴请猛搓这里,Android插件化开发基础之静态代理模式 http://blog.csdn.net/u011068702/article/detai

Android插件化开发之OpenAtlas插件启动方式与插件启动广播

到现在为止已经写了6篇文章了 Android插件化开发之OpenAtlas初体验 Android插件化开发之OpenAtlas生成插件信息列表 Android插件化开发之OpenAtlas资源打包工具补丁aapt的编译 Android插件化开发之OpenAtlas插件适配 Android插件化开发之解决OpenAtlas组件在宿主的注册问题 Android插件化开发之OpenAtlas中四大组件与Application功能的验证 这篇文章主要介绍一下OpenAtlas插件的几种启动方式,在Atl

Android插件化开发之Atlas插件适配

前三篇文章,介绍了OpenAtlas的一些基本用法以及patch的aapt的编译方法. - Android插件化开发之Atlas初体验 - Android插件化开发之Atlas生成插件信息列表 - Android插件化开发之Atlas资源打包工具补丁aapt的编译 OpenAtlas的原则就是避免引入冗余的库.也就是宿主中提供了第三方库后,插件中就不要再引入该库,编译的时候以provided形式提供即可.最简单的例子就是v4,v7兼容库,应该避免引入.为了让我妈的插件脱离OpenAtlas也能独

Android插件化开发之Atlas生成插件信息列表

上一篇文章,[Android插件化开发之Atlas初体验]( http://blog.csdn.net/sbsujjbcy/article/details/47446733),简单的介绍了使用Atlas的整个流程,但是如果你没有实践过的话估计还是一头雾水,从这篇文章开始,慢慢的切入细节.这篇文章的主题是生成插件信息列表. 细心的你或许发现了上篇文章中我们使用了一个叫openatlasbundler的项目生成了so以及一个json文件,说白了这个so只不过就是apk重命名的,而这个json文件中包

具体解释EBS接口开发之WIP模块接口

整体说明 文档目的 本文档针对WIP模块业务功能和接口进行分析和研究,对採用并发请求方式和调用API方式分别进行介绍 内容 WIP模块经常使用标准表简单介绍 WIP事物处理组成 WIP相关业务流程 WIP相关API研究事例 (十)參考文档(七)採购相关的一些知识 (一)WIP模块经常使用标准表简单介绍 1.1   经常使用标准表 例如以下表中列出了与WIP导入相关的表和说明: 表名 说明 其它信息 BOM_STRUCTURES_B BOM头信息 BOM_COMPONENTS_B BOM组件信息

李洪强IOS开发之-iOS经典面试题

李洪强IOS开发之-iOS经典面试题 写这篇文章的目的是因为前两天同学想应聘iOS开发,从网上找了iOS面试题和答案让我帮忙看看.我扫了一眼,倒吸了一口冷气,仔细一看,气的发抖.整篇题目30多个没有一个答案是对的,总结这篇面试题的作者对iOS机制根本就是一知半解就敢发到网上,不管有心还是无心都是坑害新人.所以在这里总结一下这几年面试别人和被别人面试遇到的一些我认为比较好的基础题目分享给大家,进阶题目在后续补充.我的理解如果有错漏请一定指出,非常感谢! 从12年开始做面试官到现在已经三个年头了,这

ios开发之Swift标签栏按钮UITabBarItem样式修改(图标文字尺寸,颜色等)

UITabBarItem在开发中非常的常用了它可以用来设置字体颜色及图片的设置等等,下面我们来看一篇关于ios开发之Swift标签栏按钮UITabBarItem样式修改(图标文字尺寸,颜色等)的例子,具体的细节如下所示. 1,tabBarItem图片的推荐尺寸和最大支持尺寸 下面是标签栏(UITabBar)中tab按钮图标分别在1x.2x.3x下不会压缩变形的尺寸: @1x : 推荐 25 x 25   (最大: 48 x 32)@2x : 推荐 50 x 50   (最大: 96 x 64)@

【转载】浅谈游戏开发之2D手游工具

浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android  程序设计: 其它  编程语言:   引擎/SDK: 其它  全球手游行业规模将突破250亿美元,越来越多的开发者开始进入手游研发领域,而作为一名菜鸟,很多时候,如果没有其他开发者的建议,会走很多弯.独立工作室Sheado.net公司的Chad Ata在博客中分享了他们从一开始进入手游研发到如今四年多以来积累的经验,希望可以给新入行者提供一些帮助.

unity3D游戏开发之iTween介绍和用法

unity3D游戏开发之iTween介绍和用法 一.iTween 介绍 iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出.让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等 二.iTween 原理 iTween的核心是数值插值,简单说就是给iTween两个数值(开始值,结束值),它会自动生成一些中间值. 三.iTween 下载:  从官网http://itween.pixelplacement.com下载 主要文件有两个iTween.cs