Ошибка при ссылке на проект .Net Standard в Android-проекте Xamarin - PullRequest
0 голосов
/ 04 января 2019

Я получаю эту ошибку, когда добавляю ссылку на проект .Net Standard в проекте Andoid.

Код серьезности Описание Состояние подавления строки файла проекта Ошибка Не удается разрешить ссылку: System.Threading.Tasks.Extensions, ссылка на DotNetty.Transport. Пожалуйста, добавьте пакет NuGet или ссылка на сборку для System.Threading.Tasks.Extensions или удалить ссылка на DotNetty.Transport. VFMApp.Droid

Я пытался:

  1. Ни один из пакетов NuGet (System.Threading.Tasks.Extensions / DotNetty.Transport), чистое решение, успешно скомпилированный проект, эталонный проект, компиляция: ОШИБКА

  2. Пакет NuGet для DotNetty.Transport, чистое решение, успешно скомпилированный проект, эталонный проект, компиляция: ОШИБКА

  3. Пакет NuGet для System.Threading.Tasks.Extensions, чистое решение, успешно скомпилировать проект, ссылочный проект, скомпилировать: ОШИБКА

  4. Оба пакета NuGet (System.Threading.Tasks.Extensions / DotNetty.Transport), чистое решение, успешная компиляция проекта, ссылочный проект, компиляция: ОШИБКА

Пакеты в проекте .Net Standard:

  • Acr.UserDialogs 7.0.1
  • Humanizer 2.5.16
  • Microsoft.Azure.Devices.Client 1.18.1
  • Microsoft.Azure.Mobile.Client 4.1.1
  • Microsoft.Azure.Mobile.Client.SQLiteStore 4.1.1
  • NETStandard.Library 2.0.3
  • Plugin.Share 7.1.1
  • Refractored.MvvmHelpers 1.4.1-beta
  • Xam.Plugin.Connectivity 4.0.0.190-beta
  • Xam.Plugin.DeviceInfo 4.1.0-beta
  • Xam.Plugin.Geolocator 4.5.4-beta
  • Xam.Plugin.Media 4.1.1-beta
  • Xam.Plugins.Settings 4.0.0.10-beta

Пакеты в проекте Android:

  • Xamarin.Android.Support.Compat 28.0.0
  • Xamarin.Android.Support. Дизайн 28.0.0
  • Xamarin.GooglePlayServices.Maps 60.1142.1

1 Ответ

0 голосов
/ 07 января 2019

Мне удалось получить ту же ошибку, что и вы, когда я ссылался на DotNetty.Transport из проекта Xamarin.Android, компилируя / ориентируясь на API уровня 28. Кажется, это проблема с System.Threading.Tasks.Extensions v4.5.1, на который DotNetty.Transport ссылается. Вот ссылка на похожую проблему из другого проекта:

https://github.com/dotnet/reactive/issues/803

Подводя итог, похоже, что Systems.Threading.Tasks.Extensions v4.5.1 имеет пустой профиль для MonoAndroid10. Поскольку профиль пуст, он не может разрешить файл System.Threading.Tasks.Extensions.dll, поэтому возникает ошибка.

enter image description here

Чтобы это исправить, вы должны обновить файл Android * .csproj и перенаправить ссылку, чтобы использовать System.Threading.Tasks.Extensions.dll, определенный в профиле netstandard2.0.

enter image description here

Я выполнил следующие шаги:

  1. Добавьте пакет nuget System.Threading.Tasks.Extensions v4.5.1 в ваш проект Xamarin.Android.
  2. Добавьте пакет nuget System.Runtime.CompilerServices.Unsafe v4.5.2 в ваш проект Xamarin.Android
  3. Закрыть Visual Studio.
  4. Откройте файл Xamarin.Android * .csproj в текстовом редакторе.
  5. Добавьте еще один <ItemGroup>, чтобы сообщить своему проекту об использовании профиля .netstandard2.0 вместо MonoAndroid10 профиля

<ItemGroup>
    <Reference Include="System.Threading.Tasks.Extensions">
        <HintPath>$(UserProfile)\.nuget\packages\system.threading.tasks.extensions\4.5.1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
    </Reference>
</ItemGroup>

Так это должно выглядеть примерно так:

enter image description here

Сохраните файл и перезагрузите ваш проект в visual studio. После этого я смог успешно скомпилировать.

...