【发布时间】: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