Могу ли я добавить пакеты .NET 3.5 NuGet в проект Mono для Android?

#visual-studio #nuget #xamarin.android

#visual-studio #nuget #xamarin.android

Вопрос:

Mono для Android имеет доступ к большей части .NET 4.0 из Mono framework. К сожалению, когда я пытаюсь добавить пакеты NuGet в Visual Studio, специально предназначенные для .NET 3.5 или выше, со структурой папок /lib/net */, выдается ошибка.

Вы пытаетесь установить этот пакет в проект, который нацелен на «MonoAndroid, Version = v2.1», но пакет не содержит ссылок на сборки, совместимые с этой платформой.

Если в пакете NuGet нет .Разбивка чистой версии или та, в которой вы удалили эту структуру подкаталогов и опубликовали ее в исходном коде NuGet, работает нормально. Например, NUnit просто имеет папку /lib/ без дальнейшей разбивки по версии .NET framework и устанавливается нормально.

Похоже, что NuGet может проверять совместимость с помощью <TargetFrameworkVersion> XML-элемента project file. Если да, то это проблема, поскольку Mono для Android узурпирует этот элемент, чтобы означать «целевую версию платформы Android». Например, для Android версии 2 это выглядит так:

 <TargetFrameworkVersion>v2.1</TargetFrameworkVersion>
  

В диалоговом окне свойств проекта, где будет раскрывающийся список «[.NET] Target framework», это выпадающий список для «Минимального целевого Android», который влияет на этот элемент XML.

Если это проблема, с которой сталкивается NuGet, я не смогу использовать неизмененный NuGet для пакетов, зависящих от версии, пока не настрою приложение для Android на минимум Ice Cream Sandwich (версия 4.0).

Примечание

Вы можете ссылаться на библиотеки DLL из этих пакетов через project reference . Это определенно выдает вам предупреждение, но вы можете игнорировать его довольно безопасно (при условии, что сборка не слишком далеко отклоняется от кода, реализованного в Mono).

‘Some.dll ‘, или одна из его зависимостей, требует более поздней версии .NET Framework, чем та, которая указана в проекте…

Ответ №1:

Нет, сборки должны быть скомпилированы в соответствии с профилем 2.0.5, чтобы использоваться Mono для Android. Вы можете добиться этого, используя шаблон библиотеки классов Mono для Android или используя сборки, скомпилированные для Silverlight.

Версия Android (2.2, 3.0, 4.0) не связана с версией .ЧИСТЫЙ BCL, для которого компилируется сборка.