Какая дополнительная конфигурация необходима для ссылки на сборку смешанного режима .NET 2.0 в проекте .NET 4.0?

У меня есть проект, в котором я хотел бы использовать некоторые из возможностей .NET 4.0, но основным требованием является то, что я могу использовать фреймворк System.Data.SQLite, который скомпилирован против 2.X. Я вижу упоминание об этом, например, о принятом ответе, но я не понимаю, как этого добиться.

Когда я просто пытаюсь запустить проект 4.0, ссылаясь на сборку 2.X, я получаю:

Комбинация смешанного режима построена по сравнению с версией «v2.0.50727» среды выполнения и не может быть загружена в среду выполнения 4.0 без дополнительной информации о конфигурации.

Какая «дополнительная конфигурация» необходима?

Чтобы использовать сборку смешанного режима CLR 2.0, вам необходимо изменить файл App.Config, чтобы включить:

  

useLegacyV2RuntimeActivationPolicy="true" >


Ключ – флаг useLegacyV2RuntimeActivationPolicy . Это заставляет CLR использовать последнюю версию (4.0) для загрузки сборки в смешанном режиме. Без этого это не сработает.

Обратите внимание, что это относится только к assemblyм смешанного режима (C ++ / CLI). Вы можете загрузить все управляемые сборки CLR 2 без указания этого в app.config .

Это сообщение форума в Центре разработчиков .NET Framework. Это может дать некоторое понимание.

(Добавьте в конфигурационный файл приложения.)

      

В зависимости от того, какую версию frameworks вы планируете, вы можете посмотреть здесь, чтобы получить правильную строку:

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.

      

Удалось решить проблему, добавив элемент «запуска» с установленным атрибутом «useLegacyV2RuntimeActivationPolicy» .

     

Но нужно было разместить его как первый дочерний элемент тега конфигурации в App.config, чтобы он вступил в силу .

       ...... .... 

Вышеупомянутое не работает для меня (я работаю над веб-приложением) – но это было …

Отредактируйте файл sgen.exe.config в папке (сначала мне нужно было создать его); C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v8.0A \ bin \ NETFX 4.0 Инструменты (есть также одна в папке v7.0, но мне не нужно было ее менять, я использую VS2012)

Коненты XML должны выглядеть так (то же самое в предыдущих ответах)

       

Если вы работаете в веб-службе, а assembly 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 SDK \ 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 часа поиска в Интернете. Я добавил следующее

    

Если это не решит вашу проблему, тогда -> В ссылках на проект Right Click on DLL где вы получите ошибку -> Select Properties -> « Check the Run-time Version -> Если это v2.0.50727 тогда мы знаем проблема. Проблема в следующем: – у вас есть 2.0 Version of respective DLL. Решение: – вы можете delete the respective DLL из ссылок Project, а затем download the latest version of DLL's с соответствующего веб-сайта и добавить ссылку на последнюю версию DLL-ссылки, тогда она будет работать.

Я столкнулся с такой же ошибкой и постоянно проводил добавление предложенных операторов запуска к различным файлам конфигурации в моем решении, пытаясь изолировать несоответствие структуры. Ничего не получилось. Я также добавил информацию о запуске в мои XML-схемы . Это тоже не помогло. Глядя на фактический файл, который вызывал проблему (которая только говорила бы, что она была «перемещена или удалена»), она показала, что это был фактически компилятор лицензии (LC).

Удаление исправляемого файла license.licx, похоже, устранило проблему.

Я столкнулся с подобной проблемой при переносе кода с VS 2008 на VS 2010. Внесение изменений в файл App.config решило проблему для меня.

      

Добавьте следующее в это место C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ x64 Имя_файла: sgen.exe.config (Если вы не найдете этот файл, создайте и добавьте его)

           

Также у меня была эта проблема с библиотекой classов. Если у кого-то есть проблема с библиотекой classов, добавленной в основное приложение. Просто добавь

  

вам основное приложение, которое затем будет выбрано библиотекой classов.

Давайте будем гением компьютера.