Создание приложения UWP, закодированного в xamarin.forms, в режиме выпуска приводит к внутренней ошибке компилятора: указанное приведение недопустимо.

В моем коде происходит что-то действительно раздражающее.

Я создал приложение в Xamarin.Forms после нескольких месяцев борьбы с фреймворком только для того, чтобы обнаружить, что когда я закончу, я не смогу создать свое приложение в режиме выпуска, чтобы развернуть его в Магазине.

Приложение хорошо работает в режиме отладки, но не строится в режиме выпуска в проекте UWP. Я изо всех сил пытался найти способ создать свое приложение в режиме выпуска в течение 5 дней. но независимо от того, какое решение я вижу на всех форумах и в вопросах stackoverflow, с которыми я сталкиваюсь, эта ошибка даже не мигает.

Ошибка, которую IDE показывает, когда я создаю приложение в режиме выпуска:

Внутренняя ошибка компилятора: указанное приведение недопустимо.

Это не говорит мне ничего больше, чем это. IDE не выдает никаких дополнительных сообщений об ошибках. Я боролся в течение нескольких дней, применяя решения, которые я нахожу похожими на это в Интернете, но ничего не работает.

  • Я обновил IDE
  • Обновлены все пакеты
  • Удалены пользовательские средства визуализации в проекте UWP.
  • Я просмотрел каждую часть кода, чтобы найти, где я мог сделать плохой слепок.

Я пробовал все, что мог найти в Интернете, но ничего не работает.

Обычно я не задаю вопросы на форумах, если это не становится критическим. Если я не получу никакого решения, я буду вынужден удалить этот проект и потратить впустую месяцы написания кода, навсегда отказаться от Xamarin и перейти на Flutter, который имеет лучшую репутацию, когда дело доходит до инструментов.


person John Code    schedule 15.07.2018    source источник


Ответы (1)


Во-первых, пожалуйста, не парься так сильно. Мы понимаем, что вы расстроены, но Caps Lock не помогает нам относиться к этому более серьезно. Также я знаю, что Flutter — новый «крутой парень в городе», но у него тоже есть свои проблемы. Кроссплатформенная разработка непроста, и Flutter поддерживает только две платформы, в то время как Xamarin.Forms имеет более широкий охват, что неизбежно приведет к немного большей сложности.

Мое первое предложение состояло бы в том, чтобы изменить вывод сборки более подробно в параметрах Visual Studio, потому что это могло бы раскрыть реальную проблему здесь. Когда дело доходит до режима выпуска, проблемы обычно возникают из-за типов, которые используются для отражения, но компилятор не видит их как используемые и, следовательно, отбрасывает их. Однако обычно эти ошибки появляются во время выполнения. В вашем случае я бы предложил несколько следующих вещей:

  • Прежде всего - попробуйте удалить папки bin и obj в вашем проекте. Это может помочь, так как они иногда загромождаются старыми библиотеками и создают конфликты.
  • Если вы строили с помощью системы управления версиями, такой как Git (надеюсь, вы это делали), я бы посоветовал вернуться к некоторым ранним коммитам, а затем попытаться создать там режим выпуска. Если проект собирается, перейдите к более новой фиксации и повторите попытку. Если это не так, попробуйте еще более раннюю фиксацию. Цель этого состоит в том, чтобы точно определить, когда была допущена ошибка, что должно значительно помочь вам в поиске источника проблемы.
  • Если вы не использовали какой-либо контроль версий - сначала не забудьте сделать это в следующий раз. Однако на этот раз вам придется сделать это «по старинке». Создайте новый проект и медленно, как можно меньше кода из исходного проекта, пытаясь сделать релизную сборку на каждом этапе. Надеюсь, это позволит вам найти код виновника, а затем вы сможете исправить его в исходном проекте.

Вы определенно можете опубликовать свои результаты здесь, и мы будем рады помочь вам в дальнейшем — например, точно определить реальную проблему в файле кода, как только вы сузите ее.

Я подозреваю, что ваша проблема связана с автоматически сгенерированным XAML, поэтому обязательно сосредоточьтесь на .xaml файлах, добавляя их один за другим.

person Martin Zikmund    schedule 15.07.2018
comment
дайте мне знать, если что-то движется :-) - person Martin Zikmund; 16.07.2018
comment
Привет, спасибо за ваш ответ. со вчерашнего дня я пытаюсь сделать то, что ты мне сказал. Я удалил bin и obj, сделал сборку более подробной и указал, что ошибка находится в: Microsoft.NetNative.targets. Я погуглил это, но не нашел никакого решения, поэтому я сделал, как вы сказали, и вернулся к своим прежним коммитам, но когда я вернусь к своим прежним коммитам, я сталкиваюсь с теми же ошибками, с которыми я сталкивался до этого момента, независимо от того, как далеко я возвращаюсь со своими старыми комитами git. Я не знаю, что делать, я снова вернусь в свои комиты, могу ли я надеяться, что в какой-то момент это будет хорошо - person John Code; 16.07.2018