我可以在Mono for Android项目中添加.NET 3.5+ NuGet包吗?

时间:2011-10-13 21:48:05

标签: visual-studio nuget xamarin.android

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

  

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

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

看来NuGet可能会使用<TargetFrameworkVersion>项目文件XML元素来检查兼容性。如果是这样,那就是问题,因为Android的Mono篡夺了该元素意味着“目标Android框架版本”。例如,要定位Android v2.2,它看起来像这样:

<TargetFrameworkVersion>v2.1</TargetFrameworkVersion>

在项目属性对话框中,“[.NET]目标框架”下拉列表是“影响此XML元素的最小Android到目标”的下拉列表。

如果这是NuGet遇到的问题,在针对Android应用程序至少Ice Cream Sandwich (v4.0)之前,我将无法使用未经修改的NuGet用于特定于版本的程序包。

旁注

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

  

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

1 个答案:

答案 0 :(得分:4)

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

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