У меня есть проект, в котором я хотел бы использовать некоторые функции .NET 4.0, но основное требование заключается в том, что я могу использовать инфраструктуру System.Data.SQLite, скомпилированную с 2.X. Я вижу упоминание о том, что это возможно, например принятый ответ, но я не вижу, как на самом деле этого добиться.
Когда я просто пытаюсь запустить мой проект 4.0, ссылаясь на сборку 2.X, я получаю:
Сборка смешанного режима построена на версии v2.0.50727 среды выполнения и не может быть загружена в среде выполнения 4.0 без дополнительной информации о конфигурации.
Какая «дополнительная конфигурация» необходима?
SGEN
, то исправление должно быть в файлеsgen.exe.config
рядом сsgen.exe
. Например, для VS 2015, создатьC:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\sgen.exe.config
. Источник: SGEN смешанный режим сборки Минимальное содержание файлов:<configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
Ответы:
Чтобы использовать сборку в смешанном режиме CLR 2.0 , необходимо изменить файл App.Config, включив в него:
Ключ - это
useLegacyV2RuntimeActivationPolicy
флаг. Это заставляет CLR использовать последнюю версию (4.0) для загрузки вашей сборки в смешанном режиме. Без этого не получится.Обратите внимание, что это имеет значение только для сборок в смешанном режиме (C ++ / CLI). Вы можете загрузить все управляемые сборки CLR 2, не указывая это в
app.config
.источник
Это сообщение на форуме в Центре разработчиков .NET Framework. Это может дать некоторое представление.
(Добавьте в файл конфигурации приложения.)
источник
В зависимости от того, на какую версию платформы вы нацеливаетесь, вы можете посмотреть здесь, чтобы получить правильную строку:
http://msdn.microsoft.com/en-us/library/ee517334.aspx
Я потратил впустую часы, пытаясь выяснить, почему для моего выпуска .Net 4.0 клиенту требовалась полная версия. Я использовал это в конце концов:
источник
После установки файла app.config Visual Studio сгенерирует копию в папке bin с именем App.exe.config . Скопируйте это в каталог приложения во время развертывания. Звучит очевидно, но удивительно, что многие люди пропускают этот шаг. Разработчики WinForms не используются для настройки файлов :).
источник
Совместное использование сборок 2.0 и 4.0 не совсем просто.
ORDER поддерживаемых объявлений платформы в app.config фактически влияет на исключение смешанного режима. Если вы измените порядок объявления, вы получите ошибку смешанного режима. Это цель этого ответа.
Так что, если вы получаете ошибку в приложении Windows Forms, попробуйте это, в основном, приложения Windows Forms.
Или если проект не Windows Form. В веб-проекте добавьте это в файл web.config.
источник
Удалось решить проблему, добавив элемент «startup» с набором атрибутов «useLegacyV2RuntimeActivationPolicy» .
Но он должен был поместить его в качестве первого дочернего элемента тега конфигурации в App.config, чтобы он вступил в силу .
источник
version="v2.0"
?Вышесказанное не сработало для меня (я работаю над веб-приложением) - но это сработало ...
Отредактируйте файл sgen.exe.config в папке (сначала мне пришлось его создать); C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools (в папке v7.0 также есть один, но мне не нужно было его менять, я использую VS2012)
Содержимое XML должно выглядеть следующим образом (то же самое в предыдущих ответах)
источник
Если вы работаете в веб-сервисе и сборка v2.0 является зависимостью, которая была загружена WcfSvcHost.exe, то вы должны включить
в .. \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ WcfSvcHost.exe.config файл
Таким образом, Visual Studio сможет отправлять нужную информацию через загрузчик во время выполнения.
источник
Я столкнулся с этой проблемой, когда мы перешли на Visual Studio 2015 . Ни один из приведенных выше ответов не работал для нас. В итоге мы заработали, добавив следующий конфигурационный файл ко всем исполняемым файлам sgen.exe на компьютере.
Особенно в этом месте, даже когда мы ориентировались на .NET 4.0:
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Инструменты
источник
Я использовал этот конфиг:
Работал для меня
источник
У меня была эта проблема при обновлении до Visual Studio 2015, и ни одно из решений, опубликованных здесь, не имело никакого значения, хотя конфигурация верна, расположение для изменения - нет. Я исправил эту проблему, добавив эту конфигурацию:
Кому: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config
Затем перезапустил Visual Studio.
источник
Я нашел способ обойти это после 3-4 часов поиска в Google. Я добавил следующее
Если это не решит вашу проблему, то -> В ссылках проекта,
Right Click on DLL
где вы получаете ошибку ->Select Properties
->Check the Run-time Version
-> Если это так,v2.0.50727
то мы знаем проблему. Проблема в том, что: - у вас есть2.0 Version of respective DLL.
Решение: - Вы можетеdelete the respective DLL
из ссылок проекта, а затемdownload the latest version of DLL's
с соответствующего веб-сайта и добавить ссылку на ссылку DLL последней версии, чтобы она работала.источник
Я столкнулся с этой же ошибкой и потратил целую вечность, добавляя предложенные операторы запуска в различные файлы конфигурации моего решения, пытаясь изолировать несоответствие платформы. Ничего не получалось. Я также добавил информацию о запуске в мои схемы XML . Это тоже не помогло. Глядя на фактический файл, который вызывал проблему (которая только сказала бы, что он был «перемещен или удален»), выяснилось, что на самом деле это был компилятор лицензий (LC).
Удаление поврежденного файла licenses.licx, похоже, решило проблему.
источник
Я столкнулся с подобной проблемой при переносе некоторого кода с VS 2008 на VS 2010. Внесение изменений в файл App.config решило эту проблему для меня.
источник
Добавьте следующее в этом месте C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ x64 FileName: sgen.exe.config (Если вы не нашли этот файл, создайте и добавьте его)
Это решило проблему
источник
Я использую
Это работает, но перед
</configuration>
тегом de, иначе тег запуска не работает должным образомисточник
Также у меня была эта проблема с библиотекой классов, если у кого-то есть проблема с библиотекой классов, добавленной в ваше основное приложение. Просто добавь
вам главное приложение, которое затем будет выбрано библиотекой классов.
источник