Исключения среды выполнения в собственных приложениях .NET
Очень важно выполнять тестирование сборок выпуска приложения универсальной платформы Windows на их целевых платформах, поскольку конфигурации отладки и выпуска совершенно различны. По умолчанию конфигурация отладки использует для компиляции приложения среду выполнения .NET Core, но конфигурация выпуска использует для компиляции приложения в машинный код среду выполнения .NET Native.
Важно!
Сведения об устранении исключений MissingMetadataException, MissingInteropDataException и MissingRuntimeArtifactException, которые могут возникнуть при тестировании версий выпуска приложения, см. в разделе "Шаг 4. Устранение отсутствующих метаданных вручную: раздела начало работы, а также отражение и .NET Native и Справочник по файлу конфигурации директив среды выполнения (rd.xml).
Отладочные и выпускные сборки
Когда отладочная сборка выполняется в среде выполнения .NET Core, она не компилируется в машинный код. Это делает все службы, обычно предоставляемые средой выполнения, доступными вашему приложению.
С другой стороны, выпускная сборка компилируется в машинный код для целевых платформ, при этом удаляется большинство зависимостей от внешних сред выполнения и библиотек и выполняется серьезная оптимизация кода для достижения максимальной производительности.
При отладке выпускных сборок, которые компилируются с помощью .NET Native, происходит следующее.
Вы используете модуль отладки .NET Native, который отличается от обычных средств отладки .NET.
Размер исполняемого файла максимально уменьшается. Один из способов, которым .NET Native уменьшает размер исполняемого файла, состоит в значительном сокращении сообщений об исключениях времени выполнения. Это более подробно рассматривается в разделе Runtime exception messages .
Код сильно оптимизируется. Это означает, что везде, где это возможно, используется встраивание. (Встраивание перемещает код из внешних подпрограмм в вызывающую подпрограмму.) Тот факт, что .NET Native предоставляет специализированную среду выполнения и реализует агрессивную встраивание, влияет на стек вызовов, отображаемый при отладке. Дополнительные сведения см. в разделе Runtime call stack .
Примечание
Вы можете управлять тем, будут ли отладочные и выпускные сборки компилироваться с помощью цепочки инструментов .NET Native, устанавливая или снимая флажок Компилировать с использованием цепочки инструментов машинного кода .NET . Однако Microsoft Store всегда компилирует рабочую версию приложения с .NET Native цепочкой инструментов.
Runtime exception messages
Чтобы свести к минимуму размер исполняемого файла приложения, .NET Native не включает полный текст сообщений об исключениях. В результате исключения среды выполнения, возникающие в выпускной сборке, могут не отображать полный текст сообщений об исключениях. Вместо этого текст может содержать подстроку со ссылкой на дополнительные сведения. Например, сведения об исключении могут выглядеть следующим образом:
Exception thrown: '$16_System.AggregateException' in Unknown Module.
Additional information: AggregateException_ctor_DefaultMessage
If there is a handler for this exception, the program may be safely continued.
Если требуется полное сообщение об исключении, запустите отладочную сборку. Например, предыдущие сведения об исключении из сборки выпуска могут выглядеть в отладочной сборке следующим образом:
Exception thrown: 'System.AggregateException' in NativeApp.exe.
Additional information: Value does not fall within the expected range.
Runtime call stack
Из-за встраивание и другие оптимизации стек вызовов, отображаемый приложением, скомпилированным .NET Native цепочкой инструментов, может не помочь вам четко определить путь к исключению среды выполнения.
Чтобы получить полный стек, запустите отладочную сборку.
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по