【问题标题】:Issues creating a nuget package referening Xamarin Forms创建引用 Xamarin 表单的 nuget 包的问题
【发布时间】:2020-11-17 00:17:52
【问题描述】:

我正在创建一个 nuget 包,它为平台引用了许多不同的包。

我似乎无法引用 Xam.Forms.Platform。来自各种 ItemGroups 以及我通过 nuget 为特定平台添加的包。

我用这个作为参考:https://docs.microsoft.com/en-us/nuget/guides/create-packages-for-xamarin 我的 csproj 就是这个

<Project Sdk="MSBuild.Sdk.Extras/2.0.54">

<PropertyGroup>
<!--Work around so the conditions work below-->
<TargetFrameworks></TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 
    'Windows_NT'">netstandard2.0;Xamarin.iOS10;MonoAndroid90;uap10.0.16299</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 
    'Windows_NT'">netstandard2.0;Xamarin.iOS10;MonoAndroid90</TargetFrameworks>

<AssemblyName>Plugin.Mobile.Xamarin</AssemblyName>
<RootNamespace>Plugin.Mobile.Xamarin</RootNamespace>
<PackageId>Plugin.Mobile.Xamarin</PackageId>

<Product>Plugin.Mobile.Xamarin</Product>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<AssemblyFileVersion>1.0.0.0</AssemblyFileVersion>
<Version>1.0.0.0</Version>
<PackageVersion>1.0.0.0</PackageVersion>
<PackOnBuild>true</PackOnBuild>
<NeutralLanguage>en</NeutralLanguage>
<LangVersion>default</LangVersion>
<DefineConstants>$(DefineConstants);</DefineConstants>

<UseFullSemVerForNuGet>false</UseFullSemVerForNuGet>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>

<LangVersion>latest</LangVersion>
<DebugType>portable</DebugType>


<PropertyGroup Condition=" '$(Configuration)'=='Debug' ">
<DebugSymbols>true</DebugSymbols>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)'=='Release' ">
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

<ItemGroup>
<Compile Include="**\*.cs" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.2.10" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Xamarin.Essentials" Version="1.5.3.2" />
<PackageReference Include="Xamarin.Forms" Version="4.7.0.1179" />
<PackageReference Include="Xamarin.Forms.Visual.Material" Version="4.7.0.1179" />
<PackageReference Include="SkiaSharp.Views.Forms" Version="2.80.1" />
</ItemGroup>

<ItemGroup>
<None Update="Langs.Designer.cs">
  <DesignTime>True</DesignTime>
  <AutoGen>True</AutoGen>
  <DependentUpon>Langs.resx</DependentUpon>
</None>
</ItemGroup>

<ItemGroup>
<None Update="shared\Langs.Designer.cs">
  <DesignTime>True</DesignTime>
  <AutoGen>True</AutoGen>
  <DependentUpon>Langs.resx</DependentUpon>
</None>
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="SkiaSharp.Views.Forms">
  <Version>2.80.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials" Version="1.5.3.2" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'uap10.0.16299'">
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.2.9" />
<Reference Include="Microsoft.CSharp" />
<PackageReference Include="SkiaSharp.Views.Forms">
  <Version>2.80.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="4.7.0.1179" />
<PackageReference Include="Xamarin.Forms.Visual.Material" Version="4.7.0.1179" />
<SDKReference Include="WindowsMobile, Version=10.0.16299.0">
  <Name>Windows Mobile Extensions for the UWP</Name>
</SDKReference>

<Compile Include="**\UWP*.cs" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'Xamarin.iOS10'">
<Reference Include="Xamarin.iOS">
  <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.iOS\v1.0\Xamarin.iOS.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<PackageReference Include="EasyTipView">
  <Version>1.0.1</Version>
</PackageReference>
<PackageReference Include="SkiaSharp.Views.Forms">
  <Version>2.80.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="4.7.0.1179" />
<PackageReference Include="Xamarin.Forms.Visual.Material" Version="4.7.0.1179" />

<Compile Include="**\iOS*.cs" />
</ItemGroup>

<ItemGroup Condition=" $(TargetFramework.StartsWith('MonoAndroid')) ">
<Reference Include="Mono.Android">
  <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll</HintPath>
</Reference>
<PackageReference Include="SkiaSharp.Views.Forms">
  <Version>2.80.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Tooltips">
  <Version>1.0.7</Version>
</PackageReference>
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
<Reference Include="System.Numerics" />
<PackageReference Include="Xamarin.Forms" Version="4.7.0.1179" />
<PackageReference Include="Xamarin.Forms.Visual.Material" Version="4.7.0.1179" />

<Compile Include="**\Droid*.cs" />
</ItemGroup>

</Project>

关于为什么我不能包含或引用这些包的任何想法?

我看到的错误类似于

【问题讨论】:

  • 你解决了这个问题然后请你分享你的 GitHub repo 链接。

标签: visual-studio xamarin xamarin.forms nuget


【解决方案1】:

关于为什么我不能包含或引用这些包的任何想法?

问题是由项目模板Cross-Platform .NET Standard Library Plugin引起的。

准确地说,这是由于这个特殊项目模板的设计。

As the document said,你应该使用每个平台项目的xxx.&lt;PLATFORM&gt;.cs文件中对应的平台命名空间。

建议

根据您的描述,您使用的命名空间都与Android相关,因此您应该将这些命名空间添加到文件&lt;project_name&gt;.andoroid.cs,该文件的目标是MonoAndroid90。 p>

如果您将它们输入到名为apple.csuwp.cs 或其他名称的文件中,则模板无法识别它们。

你可以看到&lt;project_name&gt;.andoroid.cs文件与MonoAndroid90相连,所以它可以识别android命名空间,其他平台文件也是如此。

另外,如果您仍然需要您的要求,您应该与扩展程序的作者联系以反映问题。

【讨论】:

    【解决方案2】:

    试着把你的TargetFrameworks变成这样

    <TargetFrameworks>netstandard2.0;Xamarin.iOS10;MonoAndroid90</TargetFrameworks>
    <TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">uap10.0.16299;$(TargetFrameworks)</TargetFrameworks>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      相关资源
      最近更新 更多