Сборка в смешанном режиме строится против версии v2.0.50727 среды выполнения - PullRequest
155 голосов
/ 21 июня 2011

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

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

когда я пытался экспортировать отчет Crystal из моей программы 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

Ответы [ 8 ]

229 голосов
/ 26 января 2012

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

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    <requiredRuntime version="v4.0.20506" />
  </startup>
81 голосов
/ 28 августа 2014

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

<startup useLegacyV2RuntimeActivationPolicy="true" /> 

Это решило мою проблему

5 голосов
/ 05 февраля 2018

Пожалуйста, добавьте атрибут useLegacyV2RuntimeActivationPolicy = "true" в файл приложения .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 голосов
/ 18 февраля 2014

У меня фактически была такая же проблема с решением обратное .Я обновил проект .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.

1 голос
/ 25 июня 2019

Если ошибка возникает в столбце ошибок «Файл» в качестве 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 Сборка в смешанном режиме

1 голос
/ 25 октября 2018

Включение наследства из 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();
}
}
1 голос
/ 21 января 2017

Для меня это было выброшено при запуске модульных тестов под 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

Сборка смешанного режима MSTest Ошибка в VS2015

1 голос
/ 24 мая 2013

Попробуйте использовать другой файл конфигурации (не тот, что в вашем проекте) и 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)
...