Комбинация смешанного режима построена против версии "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 Сборка смешанного режима