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




sqlite .net-4.0 (11)

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

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

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

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


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

http://msdn.microsoft.com/en-us/library/ee517334.aspx

Я потратил много времени, пытаясь понять, почему мой выпуск, предназначенный для клиента .Net 4.0, требует полной версии. Я использовал это в конце:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0.30319" 
               sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>

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

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

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

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

Если вы работаете в веб-службе, а сборка v2.0 - это зависимость, загруженная WcfSvcHost.exe, тогда вы должны включить

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" />
</startup>

в .. \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ WcfSvcHost.exe.config файл

Таким образом, Visual Studio сможет отправлять нужную информацию через загрузчик во время выполнения.


После того, как вы установите файл app.config , visual studio создаст копию в папке bin с именем App.exe.config . Скопируйте это в каталог приложения во время развертывания. Звучит очевидно, но удивительно, что многие пропустили этот шаг. Разработчики WinForms не используются в конфигурационных файлах :).


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

<startup useLegacyV2RuntimeActivationPolicy="true">

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


У меня возникла такая проблема при обновлении до Visual Studio 2015, и ни одно из решений, размещенных здесь, не имело никакого значения, хотя конфигурация правильная, место для изменения - нет. Я исправил эту проблему, добавив эту конфигурацию:

<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>

Кому: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config

Затем перезапустили Visual Studio.



Я использовал эту конфигурацию:

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v2.0"/>
    <supportedRuntime version="v4.0"/>
</startup>

Работал для меня


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

<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"
         sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
</configuration>

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

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


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

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
</startup>

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

<?xml version="1.0"?>
  <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
      <supportedRuntime version="v2.0.50727"/>
    </startup>
  ......
....




system.data.sqlite