Комбинация смешанного режима построена против версии "v2.0.50727" среды выполнения

Я получаю следующее исключение:

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

поскольку я пытался экспортировать хрустальный отчет из моей программы WPF...

Я уже добавил в app.config следующее:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<runtime>
  <NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>

Любые эксперты могут помочь?

Ссылка, которую я нашел: http://www.davidmoore.info/2010/12/17/running-net-2-runtime-applications-under-the-net-4-runtime

Ответ 1

Попробуйте использовать этот точный тег запуска в вашем app.config в конфигурации node

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

Ответ 2

В исключении четко указано, что компонент .NET 2.0.50727 включен в .NET 4.0. В файле App.config используйте это:

<startup useLegacyV2RuntimeActivationPolicy="true" /> 

Он решил мою проблему

Ответ 3

Пожалуйста, добавьте атрибут useLegacyV2RuntimeActivationPolicy = "true" в ваш файл приложения app.config.

Старая ценность

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

Новое значение

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

Это решит вашу проблему.

Ответ 4

У меня на самом деле была эта идентичная проблема с обратным решением. Я обновил .NET-проект до .NET 4.0, а затем вернулся к .NET 3.5. В приложении app.config в моем проекте продолжалось следующее, которое вызывало указанную выше ошибку:

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

Решение для устранения ошибки для этого было вернуть его обратно в правильную ссылку 2.0 следующим образом:

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

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

Ответ 5

Попробуйте использовать другой файл конфигурации (не тот, что в вашем проекте) и RESTART Visual Studio:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.x86.exe.config
(32-bit)

или же

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.exe.config
(64-bit)

Ответ 6

Для меня это было брошено при выполнении модульных тестов в MSTest (VS2015). Пришлось добавить

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

в

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

Mixed-Mode Assembly MSTest Ошибка в VS2015

Ответ 7

Включение наследства из app.config у меня не сработало. По неизвестным причинам мое приложение не активировало политику времени выполнения V2. Я нашел работу вокруг здесь.

Рекомендуется использовать наследие из app.config, но в некоторых случаях он работает не так, как ожидалось. Используйте следующий код в вашем главном приложении для принудительного применения политики Legacy V2:

public static class RuntimePolicyHelper
{
public static bool LegacyV2RuntimeEnabledSuccessfully { get; private set; }

static RuntimePolicyHelper()
{
    ICLRRuntimeInfo clrRuntimeInfo =
        (ICLRRuntimeInfo)RuntimeEnvironment.GetRuntimeInterfaceAsObject(
            Guid.Empty, 
            typeof(ICLRRuntimeInfo).GUID);
    try
    {
        clrRuntimeInfo.BindAsLegacyV2Runtime();
        LegacyV2RuntimeEnabledSuccessfully = true;
    }
    catch (COMException)
    {
        // This occurs with an HRESULT meaning 
        // "A different runtime was already bound to the legacy CLR version 2 activation policy."
        LegacyV2RuntimeEnabledSuccessfully = false;
    }
}

[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("BD39D1D2-BA2F-486A-89B0-B4B0CB466891")]
private interface ICLRRuntimeInfo
{
    void xGetVersionString();
    void xGetRuntimeDirectory();
    void xIsLoaded();
    void xIsLoadable();
    void xLoadErrorString();
    void xLoadLibrary();
    void xGetProcAddress();
    void xGetInterface();
    void xSetDefaultStartupFlags();
    void xGetDefaultStartupFlags();

    [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
    void BindAsLegacyV2Runtime();
}
}

Ответ 8

Если ошибка возникает в столбце ошибок "Файл" как 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. Минимальное содержимое файла: <configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>

Источник: SGEN Сборка смешанного режима