如何将PCL项目转换成.Net Standard项目

发表于:2018-5-25 09:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:临岁之寒    来源:51testing软件测试网采编

  从Xamarin.Forms 2.4开始,我们可以基于.Net Standard 2.0来构建Xamarin.Form项目,而不必像之前那样通过PCL项目进行构建。让我们迁移的.Net Standard理由是,通过.Net Standard构建的项目可以获得更好的平台移植性,对于我而言,最直观的进步是不再需要频繁地调整项目的PCL配置方案,并且不再需要小心翼翼地保持配置方案的一致性;
  以下是官方给出的迁移步骤:
  确保你的VS环境已安装了 .NET Core 2.0。
  更新 Xamarin.Forms 解决方案,以便使用 Xamarin.Forms 2.4,或更高版本(将VS For Mac更新到最新版本即可)。
  添加 一个.NET Standard Library项目到解决方案,Target Framework 选 .NET Standard 2.0。

  删除.NET Standard Library项目中的Class1文件(该文件是示例文件,你可以不管它,跳过这一步,就是不知道你是不是处女座了);
  将 Xamarin.Forms(目前已经是2.5了) NuGet 包添加到.NET Standard Library项目。
  在平台项目中,添加对我们刚才创建的.NET Standard Library项目的引用并删除对之前 Xamarin.Forms PCL 项目的引用。
  将PCL 项目中的文件复制到.NET Standard Library项目中。
  删除旧的 Xamarin.Forms PCL 项目。
  注意:
  从Xamarin.Forms PCL 项目将文件复制到.NET Standard Library项目中,执行clear操作可能会出现如下问题:
  此时把整个解决方案关闭之后重新载入,就会看到.NET Standard Library项目下存在重复的文件名,将排在后面的重名文件remove掉之后就可以了。
  如果项目报类似Error CS0103: The name 'InitializeComponent' does not exist in the current context (CS0103)的问题,使用Reveal in Finder打开项目所在文件夹,用文本编辑器打开项目的.csproj文件,添加下列代码:
  <ItemGroup>
      <!-- https://bugzilla.xamarin.com/show_bug.cgi?id=55591 -->
      <None Remove = "**\*.xaml" />
      < Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />
      <EmbeddedResource Include = "**\*.xaml" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" />
    </ItemGroup>
  rebuild项目即可;
  .NET Standard Library项目无法被PCL项目引用,所以如果要转换到.NET Standard ,则解决方案中的所有PCL项目都可能需要转换.


上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号