【问题标题】:Can I add .NET 3.5+ NuGet packages to a Mono for Android project?我可以将 .NET 3.5+ NuGet 包添加到 Mono for Android 项目吗?
【发布时间】:2011-10-13 21:48:05
【问题描述】:

Mono for Android 可以从 Mono 框架访问大部分 .NET 4.0。不幸的是,当我尝试使用 /lib/net*/ 文件夹结构在 Visual Studio 中添加专门针对 .NET 3.5 或更高版本的 NuGet 包时,它会报错。

您正在尝试将此软件包安装到一个针对目标的项目中 'MonoAndroid,Version=v2.1',但包中不包含任何 与该框架兼容的程序集引用。

如果 NuGet 包没有 .NET 版本细分,或者您删除了该子目录结构并将其发布到 NuGet 源,则它可以正常工作。例如,NUnit 只有一个 /lib/ 文件夹,没有按 .NET 框架版本进一步细分,并且安装良好。

看起来 NuGet 可以使用 <TargetFrameworkVersion> 项目文件 XML 元素检查兼容性。如果是这样,那就是问题,因为 Mono for Android 篡夺了该元素以表示“目标 Android 框架版本”。例如,针对 Android v2.2,它看起来像这样:

<TargetFrameworkVersion>v2.1</TargetFrameworkVersion>

在项目属性对话框中,“[.NET] Target framework”下拉菜单是影响此 XML 元素的“Minimum Android to target”下拉菜单。

如果这是 NuGet 遇到的问题,我将无法将未修改的 NuGet 用于特定于版本的程序包,直到将 Android 应用程序定位为至少 Ice Cream Sandwich (v4.0)

旁注

您可以通过项目引用从这些包中引用 DLL。它肯定会向您发出警告,但您可以相当安全地忽略它(假设程序集不会偏离 Mono 中实现的代码太远)。

“Some.dll”或其依赖项之一需要更高版本的 .NET Framework 比项目中指定的那个...

【问题讨论】:

    标签: visual-studio nuget xamarin.android


    【解决方案1】:

    不,必须针对 2.0.5 配置文件编译程序集才能供 Mono for Android 使用。您可以通过使用 Mono for Android 类库模板或使用为 Silverlight 编译的程序集来实现此目的。

    Android 版本(2.2、3.0、4.0)与编译程序集的 .NET BCL 版本无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多