从Visual Studio 2017 15.5.1开始,如何使用PCL创建一个Xamarin.Forms项目来定位最低Android KitKat(API 19)现在已经过时了?

问题描述 投票:6回答:1

我想知道如何创建一个针对Android Kitkat最低版本(API 19)的Xamarin.Forms项目,而不使用共享项目选项。

the minimum supported Android version is Nougat以来,.Net标准库不是一个选项。我的目标用户中有很大一部分(超过40%)仍然使用Android版本低于Nougat的手机。

在Visual Studio 15.5.1或更高版本中,在使用跨平台应用程序模板创建新的Xamarin.Forms项目时,代码共享策略部分下未提供PCL选项。

enter image description here

有人指出,PCL现在已经在Xamarin's ForumVisual Studio Developer Community上弃用了

关键支持问题:

  1. 凭借最新的Vs 2017,PCL甚至还可以使用Xamarin.Forms吗?如何?
  2. 如果是,那么创建基于PCL的Xamarin.Forms项目的步骤是什么?是否有任何开放式模板来引导它?
  3. 如果否,这是否意味着我只能使用共享项目代码共享策略/模板支持带有Xamarin.Forms的Android KitKat?
xamarin xamarin.forms xamarin.android visual-studio-2017 .net-standard
1个回答
4
投票
  • 表单支持Android 4.0.3(API 15)及更高版本,您对“目标Android版本”(compileSdkVersion)与“最低Android版本”(targetSdkVersion)的“目标框架”(minSdkVersion)感到困惑。 你的Xamarin.Form项目必须使用Nougat / 7.0(MonoAndroid7.0)或更高版本的目标框架,但可以达到最低4.0.3 / IceCreamSandwich版本。 注意:最新版本的Forms需要8.0的目标框架 Xamarin有一个很棒的指南,解释了Android与Xamarin.Android之间的关系 Understanding Android API Levels
  • Microsoft完全删除了模板选项以创建基于PCL的库 PCL项目仍然很好 NetStandard是唯一的未来,PCL已经死了等等...... 恕我直言,这是一个突破性的变化,因为很多客户还没有准备好转换为NetStd,并且仍然存在NetStd漏洞(主要是边缘情况) 仍然需要创建一个PCL库,抓取现有项目并复制,剥离和重命名...或者自己创建.csproj(参见基本的.csproj)。

A Basic Profile111 PCL .csproj:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{C38DBA87-39CB-4FD5-B409-6D19E6ED54C8}</ProjectGuid>
    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <UseMSBuildEngine>true</UseMSBuildEngine>
    <OutputType>Library</OutputType>
    <RootNamespace>PCLTemplate</RootNamespace>
    <AssemblyName>PCLTemplate</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <TargetFrameworkProfile>Profile111</TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug</OutputPath>
    <DefineConstants>DEBUG;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <Optimize>true</Optimize>
    <OutputPath>bin\Release</OutputPath>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="MyClass.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
</Project>
© www.soinside.com 2019 - 2024. All rights reserved.