参考PCL配置文件111是PCL .NET标准1.1

时间:2016-10-10 08:38:30

标签: xamarin portable-class-library .net-standard

在.NET标准PCL项目中,我想引用一个私有nuget包,其目标是配置文件111(lib \ portable-win8 + net45 + wpa81 + MonoAndroid + Xamarin.iOS10)

但是当我添加nuget包时,nuget抱怨nuget包不包含与netstandard 1.1兼容的目标。虽然文档https://docs.microsoft.com/fr-fr/dotnet/articles/standard/library解释了配置文件111与netstandard 1.1兼容,但如果引用了Microsoft.NETCore.Portable.Compatibility包,则可以引用它,这就是这种情况。

知道什么是错的吗?我可以更新自定义nuget包,但不知道要改变什么。

3 个答案:

答案 0 :(得分:3)

project.json 文件中,尝试为特定PCL配置文件添加imports指令。像这样,

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

另外,为了获得最大的兼容性,我认为您应该删除NuGet包的MonoAndroidXamarin.iOS10规范。包管理器应该能够自己完成 Xamarin 的适用性。

可以找到有关imports指令的更多信息here

答案 1 :(得分:3)

同样的技巧适用于.csproj个文件。您只需要将PackageTargetFallback添加到项目文件中(在VS2017中测试):

<PropertyGroup>
  <TargetFramework>netstandard1.1</TargetFramework>
  <PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wpa81</PackageTargetFallback>
</PropertyGroup>

答案 2 :(得分:1)

有时,在尝试使用软件包时,软件包没有支持相应的TargetFramework。对于这种情况,Imports提供了一种指定TargetFramework资产的方式 - 因为您知道它们是兼容的。

  

来自:https://docs.nuget.org/ndocs/schema/project.json

     

Imports Imports旨在允许使用dotnet TxM的软件包与未声明dotnet TxM的软件包一起运行。如果您的项目使用的是dotnet TxM,那么您所依赖的所有软件包也必须具有dotnet TxM,除非您将以下内容添加到project.json中,以便允许非dotnet平台与dotnet兼容。如果您使用的是dotnet TxM,那么PCL项目系统将根据支持的目标添加适当的import语句。

GET

MSBuild语法支持PackageTargetFallback

可能已在其中一个Microsoft目标(我们正在考虑)或其他目标中设置了PackageTargetFallbacks。

  

最后,正如@altso所说,您可以解决编辑PCL项目的.csproj的问题并添加下一行:

"frameworks": { "dotnet": { "imports" : "portable-net45+win81" } }

参考:https://github.com/NuGet/Home/wiki/PackageTargetFallback-%28new-design-for-Imports%29