"Эта сборка построена с помощью среды выполнения, более новой, чем текущая загруженная среда выполнения и не может быть загружена"

Я получаю сообщение об ошибке: "Эта сборка построена с помощью среды выполнения, более новой, чем текущая загруженная среда выполнения, и не может быть загружена".

У меня есть проект dll.NET 4.0, который вызывается проектом .NET 2.0. Есть ли способ примирить разницу в структуре?

Ответ 1

У меня есть проект dll.NET 4.0, который вызывается проектом .NET 2.0. Есть ли способ примирить разницу в структуре?

Не так, кругом, нет..NET 4 CLR может загружать сборки .NET 2 (обычно - есть несколько исключений для сборщиков смешанного режима, IIRC), но не наоборот.

Вам нужно либо обновить проект .NET 2 до .NET 4, либо перевести проект .NET 4 на .NET 3.5 (или ранее).

Ответ 2

Я получил то же сообщение об ошибке. Я давал

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe "C:\MyService\MyService.exe"

Вместо

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "C:\MyService\MyService.exe"

Ответ 3

Если вы уже пробовали все другие логические решения на этой странице, дважды проверьте это. В моем app.config у меня была ссылка на старую структуру.

<startup>
  <supportedRuntime version="v2.0.50727"/>
</startup>

должно быть

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

Вкладка проекта правильно показала v4.0, но app.config не был привязан к нашему репо с этим изменением. Чтобы исправить это, я сменил фреймворк на что-то еще и снова на 4.0, обновив файл app.config.

Ответ 4

Поскольку только одна версия времени выполнения может быть загружена в процесс (хотя, как указывали другие, обратная загрузка - загрузка 4.0 - это нормально), у вас есть несколько вариантов:

  • Обновите проект .Net 2.0
  • Оберните проект .Net 2.0 (если источник не принадлежит вам)
  • Снизьте проект .Net 4.0
  • Загрузите проект .Net 4.0 в свой собственный процесс (я считаю, что это может сработать - но приложим немного усилий, IMO)

Ответ 5

Вам нужно либо обновить проект .NET 2 до .NET 4, либо перевести проект .NET 4 на .NET 3.5 (или ранее).

Как обновить версию .net? Я не уверен, где и что указать. Пожалуйста, помогите.

Изменить: Я сам нашел ответ. Выберите проект, щелкните правой кнопкой мыши и выберите "Страницы свойств". Там вы можете выбрать версию фреймворка. или выберите проект и нажмите Shift + F4

Ответ 6

Интересно, что я продолжал получать эту ошибку. Для меня это создало конфигурацию gacutil.exe.config в том же каталоге, что и gacutil.exe. Содержимое конфигурации (текстовый файл):

<?xml version ="1.0"?> <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
    </startup> </configuration>

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

Ответ 7

Измените каталог INSTALL_UTIL_HOME с C:\WINDOWS\Microsoft.NET\Framework\v2.0 на C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 для установки службы. Эта ошибка в основном возникает при несовпадении версий.

Ответ 8

Я тоже получил эту ошибку, но проблема была в том, что я использовал более старую версию GACUTIL.EXE.

Как только у меня была правильная GACUTIL для последней версии .NET, она работала нормально.

Ошибка вводит в заблуждение, потому что она похожа на DLL, которую вы пытаетесь зарегистрировать неправильно.

Ответ 9

Эта ошибка также может быть вызвана тем, что неверная версия платформы .NET выбрана как значение по умолчанию в IIS.

Нажмите на корневой каталог node в окне "Соединения" (слева), затем выберите "Изменить версию .NET Framework" в представлении "Действия" (справа), затем выберите соответствующую версию .NET из выпадающий список.

Ответ 10

Несоответствие версии .net DLL, поэтому попробуйте перейти в приложение app.config или web.config. Как правило, они имеют более высокую структуру, чем ниже, потому что, когда мы добавляем системную DLL в более низкую версию встроенного приложения .net, поэтому она не будет работать, поэтому просто измените ее на более высокую версию

Ответ 11

Ошибка связана с тем, как я настроил пул приложений в IIS.

В моем веб-сервисе используется приложение, настроенное для v2.0.50727. Это привело к появлению сообщения об ошибке.

Когда я изменил его на v4.0.30319, я не получил ошибку.

Ответ 12

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

Пул приложений → дополнительные настройки → рабочая версия фрейма .Net (изменено с v2.0 на v4.0)