Тип Task <> существует как в Unity.Tasks, так и в mscorelib (Unity Question) - PullRequest
0 голосов
/ 28 марта 2020

Я столкнулся с бешеной проблемой. Я использую System.Threading.Tasks в моем проекте. Недавно я импортировал новый плагин (Google Firebase), который поставляется с собственной DLL (Unity.Tasks). Что ж, похоже, гении в Google не осознавали, что Unity полностью поддерживает System.Threading.Tasks, и решили связать это пространство имен с их dll. Я не могу избавиться от Unity.Tasks или это нарушает Firebase. Я не могу использовать псевдоним extern для ссылки на mscorelib, или я получаю сообщение о том, что мой код не возвращает Task <> (хотя это действительно происходило до того, как я использовал псевдоним). Я в недоумении от того, что я должен сделать здесь. Я бы очень хотел использовать FireBase, поскольку это очень легко реализовать, но мне также нужно использовать Задачи в моем проекте для асинхронного программирования. У кого-нибудь есть какие-нибудь блестящие идеи?

Примечание: я использую Unity 2020 beta 2 и. Net 4.0 с бэкэндом IL2 CPP. Я пытался с. NET 2.0, моно бэкэнд и Unity 2019.x. Нет успеха Любая и вся помощь приветствуется.

Кроме того: Я действительно проверил все остальные ответы переполнения стека и ни один из них не будет работать в моем случае. Я попробовал все из них.

Вот скриншот ошибки, выданной в Visual Studio

1 Ответ

1 голос
/ 30 марта 2020

Дублированная реализация задачи поставляется в Firebase SDK по причинам обратной совместимости. Если вы импортировали папку dotnet4, она не должна быть включена по умолчанию, но если вы потеряли файлы .meta (или каталог Library в случае, если вы не используете файлы .meta) или были вручную настраивая параметры сборки (например, извлекая неправильные зависимости при записи файлов .asmdef), вы можете снова вводить неверные.

Проверка Assets/Parse/Plugins

imageAssets/Parse/Plugins is selected">

Убедитесь, что базовый уровень Unity.Tasks и Unity.Compat отключены (вы можете удалить их, если хотите).

imageUnity.Tasks is unchecked for all platforms">

И убедитесь, что dll в папке dotNet45 включены:

imageParse/Plugins/dotNet45">

Вам должно быть хорошо до go!

Небольшое отступление: вы можете удивиться, почему мы вообще включаем Unity.Tasks. Firebase не будет компилироваться против реализации ванильных задач, реализация dotNet45 перенаправляет несколько функций и гарантирует, что Firebase может использоваться без переписывания кода.

Теперь, когда я дал вам этот краткий обзор, Есть еще одна вещь, которую вы можете сделать. Поддержка диспетчера пакетов Unity была только что выпущена. Если вы используете поддерживаемую версию Unity (2018.4 или новее), вы можете переместить Firebase в UPM. Затем все эти файлы будут перемещены в папку Library и, будем надеяться, будут автоматически очищаться для дальнейшего продвижения. Есть некоторые незначительные проблемы (например: исправление gradleTemplate.gradle не совсем работает в прошлый раз, когда я проверял, что является дополнительной функцией), но это может быть в целом более чистой интеграцией (и должно быть улучшено со временем).

Надеюсь, это поможет!

- Патрик

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...