Ich habe eine Anwendung in Skripten hinzugefügt und einige Referenzen auf Assemblys mit der Version v2.0.50727 hinzugefügt. Während der Ausführung der Skriptdatei wird die Assembly im gemischten Modus für die Version 'v2.0.50727' der Laufzeit erstellt und kann nicht in die 4.0-Laufzeitumgebung geladen werden. Das Setting-Attribut useLegacyV2RuntimeActivationPolicy = "true" in app.config kann das Problem in ASP beheben .net Webanwendung. aber in Skripten funktioniert es nicht. Weitere Suche zeigt, dass über attribute useLegacyV2RuntimeActivationPolicy = "true" als scriptcs.exe.config hinzugefügt werden sollte. Ich habe eine Anwendungsdatei mit dem Namen FMUpgrade.csx und wie können wir diese scriptcs.exe.config in der FMUpgrade.csx-Datei referenzieren.scriptcs docs sagt nicht viel über scriptcs.exe.config.Also hinzugefügt program.exe.config mit app .config aber immer noch nicht erfolgreich.scriptcs Assembly-Fehler im gemischten Modus
Antwort
Nach viel Forschung bekam ich eine Umgehungslösung für das oben genannte Problem. Durch Verwendung der Klasse ExeConfigurationFileMap konnten wir die Schlüsselwerte von app.config abrufen, es ist nicht in der Lage, den unterstützten Laufzeitfehler zu umgehen, der durch einen Assembly-Fehler im gemischten Modus verursacht wurde. Server Server = neuer Server (neue ServerConnection (con)); server.ConnectionContext.ExecuteNonQuery (Skript); Der Fehler wird beim Ausführen der Anweisung ExecuteNonQuery verursacht. Also, bevor die Anweisung
if (RuntimePolicyHelper.LegacyV2RuntimeEnabledSuccessfully) server.ConnectionContext.ExecuteNonQuery (Skript) ausgeführt wird;
Lösung ist unter mit System.Runtime.CompilerServices; mithilfe von System.Runtime.InteropServices; öffentliche statische Klasse RuntimePolicyHelper { öffentliche statische bool LegacyV2RuntimeEnabledSuccessfullyly {get; privates 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();
}
} using System.Runtime.CompilerServices;
mit System.Runtime.InteropServices; öffentliche statische Klasse RuntimePolicyHelper { öffentliche statische Bool LegacyV2RuntimeEnabledSuccessfully {get; privates 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. Debugging im gemischten Modus
- 2. MFC/CLI gemischten Modus 'System.AccessViolationException'
- 3. Ermöglichen der Authentifizierung im gemischten Modus in IIS 7.0
- 4. Visual Studio 8: Build-Zeiten in Assemblys im gemischten Modus
- 5. Jackrabbit-Clustering mit einer H2-Datenbank im gemischten Modus
- 6. SQL Server 2008 Gemischte Sicherheit im gemischten Modus?
- 7. AutoPtr in C++/CLI gemischten Modus
- 8. Datei-Download in aspx und MVC gemischten Modus Fall
- 9. Einstellung/SECURITYMODE auf gemischten Modus für SQL Server 2012 Installieren
- 10. Wie führt man Komponententests mit dem Debugger im gemischten Modus durch? (VS2008)
- 11. Funktionieren Assemblys im gemischten Modus (C++/CLI-Projekte) auf .NET Core?
- 12. Ist es möglich, sowohl den CodeMirror: Velocity-Modus und den CodeMirror: HTML gemischten Modus zu mischen?
- 13. Wie kann ich vom SQL Server-Windows-Modus in den gemischten Modus (SQL Server 2008) wechseln?
- 14. Autofill-Modus im Noweb-Modus deaktivieren
- 15. TSQL-Modus (wie im Mittelwert, Median, Modus)
- 16. SEGFAULT im -O3-Modus?
- 17. Pendrive im Readonly-Modus
- 18. UIAlertView im Landscape-Modus
- 19. UIDeviceOrientationUnbekannt im Landscape-Modus
- 20. ServerConnection.ExecuteNonQuery im SQLCMD-Modus
- 21. Jmeter im verteilten Modus
- 22. Schreiben im Debug-Modus im Freigabemodus
- 23. body.scrollTop ist im strikten Modus veraltet. Verwenden Sie 'documentElement.scrollTop' im strikten Modus und 'body.scrollTop' nur im quirks-Modus.
- 24. Operandengrößenpräfix im 16-Bit-Modus
- 25. iPhone UITextField im Landscape-Modus
- 26. Arbeitet ProGuard im Reverse-Modus?
- 27. GWT context.xml im Shell-Modus
- 28. WebAuthenticationBroker im Win10 Tablet-Modus
- 29. NHibernate Linq im schreibgeschützten Modus
- 30. Jmeter Fehler im GUI-Modus