Не удалось скомпилировать MyLibrary.dll AOT, компилятор AOT завершил работу с кодом 1 (ProjectName)

У меня есть приложение MAUI (.NET 7), ссылающееся на пользовательскую библиотеку классов (.dll) с инфраструктурой EF Core (.NET 6), которая прекрасно компилируется и развертывается в режиме отладки на всех платформах. К сожалению, когда я пытаюсь скомпилировать и упаковать его, я получаю следующую ошибку:

/usr/local/share/dotnet/packs/Microsoft.MacCatalyst.Sdk/16.2.1040/targets/Xamarin.Shared.Sdk.targets(1011,3): ошибка: не удалось скомпилировать AOT MyLibrary.dll, компилятор AOT завершил работу с кодом 1 1 ошибка(и)

или аналогичный на Android или MacCatalyst.

Есть ли какой-либо вариант, который мне не хватает, чтобы деактивировать компиляцию AOT? Могу ли я деактивировать его, так как мне также нужно упаковать его для устройств iOS? Или я должен что-то изменить в самом проекте библиотеки, чтобы он подходил для компиляции AOT?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
203
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Существует проблема с ошибкой компиляции при публикации для iOS. У него такое же сообщение об ошибке, как и у вас.

И вы можете попробовать обходной путь в комментарии, используя следующий код в csproj.file.

<PropertyGroup Condition = "'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net6.0-ios|AnyCPU'">
<MtouchUseLlvm>False</MtouchUseLlvm>
<AotAssemblies>True</AotAssemblies>
</PropertyGroup>

Кроме того, если вы можете поделиться своим проектом на github, вы также можете опубликовать новую проблему и опубликовать свой проект в качестве образца.

Обновление 1:

Добавьте следующий код в свой csproj:

<PropertyGroup>
    <UseInterpreter>true</UseInterpreter>
</PropertyGroup>

Спасибо за предложение. Я попытался использовать новый шаблон проекта MAUI, но применить его, к сожалению, не получилось. Чтобы усложнить ситуацию, я использую Vs для Mac, и раздел «Конфигурации» в свойствах проекта не так удобен для пользователя: / не знаю, что еще делать, если не открывать вопрос на GitHub, как вы сказали…

ImproveSoftware 13.04.2023 07:18

Вы пытались отключить Аот с помощью <AotAssemblies>False</AotAssemblies>? @ImproveSoftware

Liyun Zhang - MSFT 13.04.2023 07:22

А ты поменял 'Release|net6.0-ios|AnyCPU' на 'Release|net7.0-ios|AnyCPU'? Я вижу, вы сказали, что ваш проект .net 7.0. @ImproveSoftware

Liyun Zhang - MSFT 13.04.2023 07:42

Да, конечно, я переключился на «Release|net7.0-ios|AnyCPU» и попытался отключить AOT, используя предложенную вами разметку, но безуспешно. Я также попытался с предложенной (в качестве предупреждения) другой разметкой отключить компиляцию AOT, которая называется «RunAOTCompilation», которая должна заменить «AotAssemblies», но я получаю еще больше ошибок. Проблема по-прежнему заключается в том, что сборка, на которую ссылаются, не может скомпилироваться AOT (это мирная .NET 6 с библиотекой классов контекста EF Core).

ImproveSoftware 13.04.2023 08:42

Возможно, вы можете попробовать установить целевую структуру вашего проекта как .net 6.0. Поскольку библиотека контекстных классов EF Core — это .net 6.0. @ImproveSoftware

Liyun Zhang - MSFT 13.04.2023 08:45

Я попробую как можно скорее и дам вам знать. Кстати, должна ли библиотека классов .NET 6 быть несовместимой с проектом .NET 7 (особенно если задействованные пакеты nuget поддерживают используемые рабочие нагрузки)? Я ошибаюсь?

ImproveSoftware 13.04.2023 08:52

Ладно, ждем ваших отзывов. @ImproveSoftware

Liyun Zhang - MSFT 13.04.2023 11:49

Я пробовал все, что вы предложили, безуспешно. Включал и отключал несколько опций как в исходном проекте, так и в новом шаблонном. Я даже пробовал с совершенно новой конфигурацией. Несмотря на то, что иногда он собирается в режиме выпуска, он не может быть опубликован независимо от того, работаю ли я с помощью CLI или IDE. И ошибка у меня всегда одна и та же (та что в теме). Я всерьез подумываю о том, чтобы вообще отказаться от этой библиотеки. Просто чтобы дать вам больше информации, я использую Vs для Mac Silicon. Не знаю, что еще делать :/

ImproveSoftware 13.04.2023 20:02

После еще трех часов, потраченных на то, чтобы понять это, я пришел к следующему: он будет скомпилирован и запущен в конфигурации выпуска, если я установлю компоновщик конкретной платформы на «Связать все». Это позволит мне правильно опубликовать приложение. Однако, когда я тестировал опубликованную версию на веб-сервисе, я заметил, что модели (или вообще объекты), содержащиеся в упомянутой внешней библиотеке классов, построены неправильно. Это, конечно, вызывает ряд проблем. Может ли это странное поведение быть как-то связано с настройками компоновщика? Я очень в отчаянии :(

ImproveSoftware 14.04.2023 01:18

Какую версию xcode вы использовали? И вы опубликовали проект с Visual Studio для Mac или для Windows? @ImproveSoftware

Liyun Zhang - MSFT 14.04.2023 07:30

XCode 14.3 (последняя версия), но это произошло и с XCode 14.2. Нет, у меня есть только Vs для Mac, так как у меня нет машины с Windows.

ImproveSoftware 14.04.2023 08:02

Вы пытались опубликовать проект шаблона без пользовательской библиотеки классов (.dll)? @ImproveSoftware

Liyun Zhang - MSFT 14.04.2023 08:06

Да и работает исправно.

ImproveSoftware 14.04.2023 08:12

Так что причина в пользовательской библиотеке. Вы можете попробовать добавить <PropertyGroup> <UseInterpreter>true</UseInterpreter> </PropertyGroup> в csproj.flie по этому выпуску на гитхабе. @ImproveSoftware

Liyun Zhang - MSFT 14.04.2023 08:18

Оставив настраиваемые свойства конфигурации Release (связать только сборки SDK), но установив для интерпретатора значение TRUE, удалось добиться цели! Скомпилированный исполняемый файл (для MacCatalyst) легче и работает правильно. Компилятор AOT больше не дает сбоев (хотя я его не отключал). Я даже смог опубликовать для iOS. Спасибо за вашу хорошую помощь, я на самом деле не знаю, почему я должен был пройти через это! :)

ImproveSoftware 14.04.2023 09:29

Вы имели в виду, что код <PropertyGroup><UseInterpreter>true</UseInterpreter> </PropertyGroup> решил эту проблему? @ImproveSoftware

Liyun Zhang - MSFT 14.04.2023 09:32

Я подтверждаю, что добавление <PropertyGroup><UseInterpreter>true</UseInterpreter> </PropertyGroup> решило проблему компиляции AOT на iOS и MacCatalyst.

ImproveSoftware 14.04.2023 09:50

Хорошо, рад узнать, что вы решили проблему. Удачного кодирования!

Liyun Zhang - MSFT 14.04.2023 10:03

Другие вопросы по теме