Ansamblul în mod mixt este construit în funcție de versiunea „v2.0.50727′ a timpului de execuție. (Programare, .Net, Visual Studio 2010,.Net 4.0, Ado.Net, Rapoarte De Cristal)

Christina Wong a intrebat.

Primesc următoarea excepție:

Ansamblul în mod mixt este construit în raport cu versiunea ‘v2.0.50727′ a timpului de execuție și nu poate fi încărcat în timpul de execuție 4.0 fără informații suplimentare de configurare.

în timp ce încercam să export raportul Crystal Report din programul meu WPF…

Am adăugat deja următoarele în app.config…

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

Orice expert vă poate ajuta????

Referința pe care am găsit-o: http://www.davidmoore.info/2010/12/17/running-net-2-runtime-applications-under-the-net-4-runtime

Comentarii

  • IMPORTANT: Dacă eroarea apare cu coloana de eroare „File” ca fiind SGEN, , atunci soluția trebuie să fie într-un fișier sgen.exe.config, , alături de sgen.exe. De exemplu, pentru VS 2015, creați C:Program Files (x86)Microsoft SDKsWindowsv10.0AbinNETFX 4.6 Toolssgen.exe.config. Sursă: SGEN Ansamblu în mod mixt Conținutul minim al fișierului: <configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration> –  > Por ToolmakerSteve.
  • Rețineți că este posibil să nu aveți doar „C:Program Files (x86)Microsoft SDKsWindowsv10.0AbinNETFX 4.6 Tools
    , ci și un director „x64” care are, de asemenea, un sgen.exe și, eventual, alte câteva copii/versiuni ale sgen, toate în căi diferite, în funcție de câte și ce versiuni de VS aveți instalate. –  > Por MickeyfAgain_BeforeExitOfSO.
  • @ToolmakerSteve Te rog să postezi comentariul tău ca răspuns, astfel încât să îl pot vota în sus; niciunul dintre celelalte răspunsuri nu m-a ajutat. –  > Por Malcolm.
  • @Malcolm – OK, postat ca răspuns –  > Por ToolmakerSteve.
8 răspunsuri
Talha

Încercați să utilizați acest tag de pornire exact în app.config sub nodul de configurare

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

Comentarii

  • De fapt, ar trebui să adăugați liniile înșelătoare la YourApp.**exe**.config. –  > Por AntonK.
  • 25

  • Acesta este app.config. Compilatorul îl va redenumi la compilare. –  > Por Jeff.
  • 67

  • Singura parte care este necesară este useLegacyV2RuntimeActivationPolicy=”true”. Puteți lăsa versiunea curentă a cadrului dvs. –  > Por Ben Gripka.
  • Pot să dublez ceea ce spune Ben, am omis requiredRuntime suplimentar și problema mea a dispărut. –  > Por Mike Malter.
  • Acest link ar trebui, de asemenea, să vă ajute să înțelegeți care este problema și ce face soluția pentru dumneavoastră: msdn.microsoft.com/en-us/magazine/ee819091.aspx –  > Por Mouhammed Soueidane.
Bibaswann Bandyopadhyay

Excepția identifică în mod clar o anumită componentă .NET 2.0.50727 a fost inclusă în .NET 4.0. În fișierul App.config utilizați acest lucru:

<startup useLegacyV2RuntimeActivationPolicy="true" /> 

Mi-a rezolvat problema

Comentarii

  • Acest lucru are nevoie de o bară oblică de închidere <startup useLegacyV2RuntimeActivationPolicy="true" /> –  > Por Jonn.
Brijesh Kumar Tripathi

Vă rugăm să adăugați atributul useLegacyV2RuntimeActivationPolicy=”true” în fișierul app.config al aplicațiilor dumneavoastră.

Vechea valoare

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

Noua valoare

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

Vă va rezolva problema.

Comentarii

  • Mă bucur să știu că a funcționat pentru dvs. Vă mulțumim pentru comentariul dumneavoastră! –  > Por Brijesh Kumar Tripathi.
atconway

De fapt, am avut această problemă identică cu inversă soluție. Am actualizat un proiect .NET la .NET 4.0 și apoi am revenit la .NET 3.5. App.config din proiectul meu a continuat să aibă următoarele, ceea ce a cauzat eroarea de mai sus în cauză:

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

Soluția de rezolvare a erorii a fost să revin la referința corespunzătoare 2.0, după cum urmează:

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

Așadar, dacă un downgrade produce eroarea de mai sus, este posibil să fie nevoie să faceți o copie de rezervă a versiunii suportate de .NET Framework.

Talha Imam

Activarea moștenirii din app.config nu a funcționat pentru mine. Din motive necunoscute, aplicația mea nu a activat politica de execuție V2. Am găsit o soluție de rezolvare aici.

Activarea moștenirii din app.config este o abordare recomandată, dar în unele cazuri nu funcționează conform așteptărilor. Utilizați următorul cod cu în aplicația principală pentru a forța politica 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();
}
}

Comentarii

  • A funcționat pentru mine –  > Por Yiannis Leoussis.
ToolmakerSteve

Dacă eroarea se întâmplă cu coloana de eroare „File” ca SGEN, atunci remedierea trebuie să fie într-un fișier sgen.exe.config, , alături de sgen.exe. De exemplu, pentru VS 2015, creați C:Program Files (x86)Microsoft SDKsWindowsv10.0AbinNETFX 4.6 Toolssgen.exe.config. Conținutul minim al fișierului: <configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>

Sursa: SGEN Ansamblu în mod mixt

Janis S.

Pentru mine, acest lucru a fost aruncat atunci când am rulat testele unitare sub MSTest (VS2015). A trebuit să adaug

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

în

C:Program Files (x86)Microsoft Visual Studio 14.0Common7IDECommonExtensionsMicrosoftTestWindowTE.ProcessHost.Managed.exe.config

Testul MSTest de asamblare în mod mixt eșuează în VS2015

Alexander Tytarchuk

Încercați să utilizați un alt fișier de configurare (nu cel din proiectul dvs.) și RESTART Visual Studio:

C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDECommonExtensionsMicrosoftTestWindowvstest.executionengine.x86.exe.config
(32-bit)

sau

C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDECommonExtensionsMicrosoftTestWindowvstest.executionengine.exe.config
(64-bit)

Comentarii

  • Aș extinde acest lucru, deoarece ocolirea sistemului nativ .config care rezidă într-o aplicație și care este de obicei necesară pentru configurații suplimentare ale aplicației nu ar fi o soluție bună. –  > Por atconway.
  • Pentru testele unitare, modificarea configurației trebuie să aibă loc în fișierul vstest.executionengine.x86.exe.config, deoarece acel executabil este procesul părinte al codului pe care îl testați. Se presupune că această problemă a fost rezolvată în Visual Studio 2012 SP4, dar este încă prezentă pe mașina mea. –  > Por Brandon S.
  • (Rețineți că nu ar trebui să fie nevoie să reporniți Visual Studio pentru ca modificările să aibă efect. Ar trebui doar să trebuiască să încheiați task-ul pe procesele vstest.*, deoarece acestea rămân pe loc chiar și după ce testele unitare se finalizează). –  > Por Brandon S.
  • Upvoating acest lucru, deoarece m-a condus la locul real în care a trebuit să schimb acest lucru. –  > Por Janis S..