【问题标题】:How to use nuget package in NET standard project, which is only compatible with portable-net45+win8+wp8+wpa81?NET标准项目中如何使用nuget包,只兼容portable-net45+win8+wp8+wpa81?
【发布时间】:2017-09-18 18:14:23
【问题描述】:

上下文

经过几个小时的无聊工作,我刚刚将我的所有 PCL 项目迁移到 Xamarin.Forms 解决方案中的 .NET 标准。 (为什么?因为当时这似乎是个好主意)

不管怎样,我成功了。

下一步我决定添加 Xamarin Insights,我被定向到 https://mobile.azure.com/,在那里我指示使用 Microsoft.Azure.Mobile.Analytics 和 Microsoft.Azure.Mobile.Crashes 包。

但是,在安装任何软件包时,我收到此错误:

Package Microsoft.Azure.Mobile.Analytics 0.15.0 is not compatible with netstandard1.4 (.NETStandard,Version=v1.4). Package 
Microsoft.Azure.Mobile.Analytics 0.15.0 supports:
 - monoandroid403 (MonoAndroid,Version=v4.0.3)
 - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
 - uap10.0 (UAP,Version=v10.0)
 - xamarinios10 (Xamarin.iOS,Version=v1.0)

问题

我理解错误。请不要告诉我我必须将所有项目再次迁移回 PCL。 (并放弃 .NET 标准)。

我有一些记忆,在某处我读到有一个神奇的包,我安装了它,然后它提供了一些技巧,一切都会再次变得很酷。 (还是我在做梦?)

【问题讨论】:

    标签: xamarin nuget mobile-center visual-studio-app-center


    【解决方案1】:

    您可以在项目配置中添加回退以在 PCL 项目中使用 .NET 标准包:

    新的 csproj 格式:

    <PropertyGroup>
      <PackageTargetFallback>portable-net45+win8+wpa81</PackageTargetFallback>
    </PropertyGroup>
    

    旧的 project.json 格式:

     "frameworks": {
       "netstandard1.4": {
         "imports": "portable-net45+win8+wpa81"
       }
     }
    

    至于“魔法”包,您可能听说过 Microsoft.Bcl.Build,但在这种情况下,我不确定它是否有帮助。

    【讨论】:

    • 请注意,PackageTargetFallback 在 .NET Standard 2.0 和 .NET Core 2.0 中已被弃用,取而代之的是 PackageAssetFallback,其行为略有不同。
    • PackageAssertFallback 没有成功,只有 PackageTargetFallback 有效。这应该被视为一个坏兆头吗?
    • 您在问题中使用的是 .net 标准 1.4,但 PackageAssetFallback 适用于 2.0。您是否同时更新到 2.0?
    • PS:Microsoft.AppCenter 是 MobileCenter 软件包的 1.0.0 版本,现在对 .NET 标准具有一流的支持。因此,新包中不再需要这种解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多