Ich erhalte die folgende Ausnahme:
Die Assembly im gemischten Modus basiert auf der Version 'v2.0.50727' der Laufzeit und kann ohne zusätzliche Konfigurationsinformationen nicht in die 4.0-Laufzeit geladen werden.
als ich versuchte, einen Kristallbericht aus meinem WPF-Programm zu exportieren ...
Folgendes habe ich in der app.config bereits hinzugefügt ...
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
Jeder Experte kann helfen ????
Referenz Ich fand: http://www.davidmoore.info/2010/12/17/running-net-2-runtime-applications-under-the-net-4-runtime
.net
visual-studio-2010
.net-4.0
ado.net
crystal-reports
Christina Wong
quelle
quelle
SGEN
auftritt, muss sich das Update in einer Dateisgen.exe.config
neben befindensgen.exe
. Erstellen Sie beispielsweise für VS 2015C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\sgen.exe.config
. Quelle: SGEN Assembly im gemischten Modus Mindestinhalt der Datei:<configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
Antworten:
Versuchen Sie, genau dieses Start-Tag in Ihrer app.config unter dem Konfigurationsknoten zu verwenden
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> <requiredRuntime version="v4.0.20506" /> </startup>
quelle
Die Ausnahme identifiziert eindeutig, dass eine .NET 2.0.50727-Komponente in .NET 4.0 enthalten war. Verwenden Sie in der Datei App.config Folgendes:
<startup useLegacyV2RuntimeActivationPolicy="true" />
Es hat mein Problem gelöst
quelle
<startup useLegacyV2RuntimeActivationPolicy="true" />
Bitte fügen Sie das Attribut useLegacyV2RuntimeActivationPolicy = "true" in die Anwendungsdatei app.config ein.
Alter Wert
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/> </startup>
Neuer Wert
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/> </startup>
Es wird Ihr Problem lösen.
quelle
Ich hatte tatsächlich dieses identische Problem mit der inversen Lösung. Ich hatte ein .NET-Projekt auf .NET 4.0 aktualisiert und dann wieder auf .NET 3.5 zurückgesetzt. Die app.config in meinem Projekt hatte weiterhin Folgendes, was den oben genannten Fehler verursachte:
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup>
Die Lösung zur Behebung des Fehlers bestand darin, ihn wie folgt auf die richtige 2.0-Referenz zurückzusetzen:
<startup> <supportedRuntime version="v2.0.50727"/> </startup>
Wenn bei einem Downgrade der oben genannte Fehler auftritt, müssen Sie möglicherweise die von .NET Framework unterstützte Version sichern.
quelle
Wenn der Fehler mit der Fehlerspalte "Datei" als SGEN auftritt, muss sich das Update in einer Datei
sgen.exe.config
neben befindensgen.exe
. Erstellen Sie beispielsweise für VS 2015C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\sgen.exe.config
. Minimaler Dateiinhalt:<configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
Quelle: SGEN Mixed-Mode-Baugruppe
quelle
Für mich wurde dies beim Ausführen von Unit-Tests unter
MSTest
(VS2015) geworfen . Musste hinzufügen<startup useLegacyV2RuntimeActivationPolicy="true"> </startup>
im
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\TE.ProcessHost.Managed.exe.config
Mixed-Mode-Assembly MSTest schlägt in VS2015 fehl
quelle
Das Aktivieren des Legacy von app.config hat bei mir nicht funktioniert. Aus unbekannten Gründen hat meine Anwendung die V2-Laufzeitrichtlinie nicht aktiviert. Ich habe hier eine Arbeit gefunden .
Das Aktivieren des Legacy von app.config wird empfohlen, funktioniert jedoch in einigen Fällen nicht wie erwartet. Verwenden Sie den folgenden Code in Ihrer Hauptanwendung, um die Legacy V2-Richtlinie zu erzwingen:
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(); } }
quelle
Versuchen Sie, eine andere Konfigurationsdatei (nicht die aus Ihrem Projekt) und RESTART Visual Studio zu verwenden:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.x86.exe.config (32-bit)
oder
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.exe.config (64-bit)
quelle
.config
es keine gute Lösung wäre, das native System zu umgehen , das sich in einer Anwendung befindet und normalerweise für zusätzliche Anwendungskonfigurationen benötigt wird.