Я перенес проект WPF из .NET Framework в .NET 6, который отлично работает в моей локальной системе (Windows 11). Однако когда я перешел на конвейер Azure, мы получили эту ошибку, и ее можно воспроизвести на виртуальной машине Windows Server 2022. Полная ошибка
Error LC0000 'Could not load file or assembly 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)' ProAnalysisUI C:\...\ProAnalysisUI\LC 1
Меня смущают несколько моментов:
LC, чего я не вижу непосредственно в структуре файла. Что означает этот файл?Обновление 1:
После некоторых экспериментов мне удалось изолировать проблему с помощью стороннего инструмента Actipro. Есть два способа интеграции этого инструмента. Первый способ, который я использовал, — это установка программного обеспечения и создание ссылок на сборки. Все работало нормально. Поскольку мы переходим на Azure, мне пришлось переключиться на второй способ — пакет Nuget. В моей локальной системе все работало нормально, но не в Pipeline/VM. Сегодня я удалил локальную установку Actipro и вижу ту же ошибку на своем локальном компьютере. Поэтому я думаю, что эта проблема не связана с виртуальной машиной. Есть ли способ, чтобы пакет Nuget читал информацию о лицензии из локального хранилища? Вот ссылка на их официальное руководство: https://www.actiprosoftware.com/docs/controls/wpf/licensing
@Энди Да, я так думаю. У меня есть другие проекты, ориентированные на ту же структуру и в том же решении. Они без проблем собираются на виртуальной машине.
Установлена ли среда выполнения .NET6 с поддержкой рабочего стола Windows? Это конкретно должно быть на виртуальной машине. @andy, возможно, это была опечатка, но .NET6 будет ядром .NET, а не Framework. Таким образом, среда выполнения настольных приложений должна быть установлена на виртуальной машине и не будет стандартной частью ОС.
Извините, подождите, это сервер BUILD, а не виртуальная машина, на которой работает приложение? В этом случае это просто означает, что на сервере сборки не установлены нужные зависимости SDK.
Могу ли я предположить, что проблема воспроизводится при сборке проекта на виртуальной машине Windows Server 2022 без использования конвейера? Скорее всего, это было вызвано отсутствием необходимой зависимости, установленной в среде.
@AlvinZhao-MSFT Спасибо, ребята, за помощь. Кажется, проблема не связана с виртуальной машиной или конвейером. Теперь я могу воспроизвести проблему на своем локальном компьютере. Пожалуйста, посмотрите обновление.
@EmperorEto Спасибо за помощь. Кажется, проблема не связана с виртуальной машиной или конвейером. Теперь я могу воспроизвести проблему на своем локальном компьютере. Пожалуйста, посмотрите обновление.





Проблема вызвана существующим файлом .licx, который больше не поддерживается Actipro .NET 6. После удаления файла он работает без проблем.
Среда выполнения системы 6 — это .net framework 6. Вы можете ссылаться на пространства имен там, но прежде всего нужно проверить, правильно ли вы ссылаетесь на это в своем yml. Разве это не на ВМ? Вам нужна версия Windows для wpf.