Fehlermeldung 0x8013141A Microsoft.mshtml

UweKeim
Fri, 11 Mar 2022 16:30:07 +0000
Windows Forms

Heute auf einem Testsystem folgende Fehlermeldung erhalten (Achtung, lang!):

System.IO.FileLoadException

-----------------

Die Datei oder Assembly "Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" oder eine Abhängigkeit davon wurde nicht gefunden. Fehler bei der Überprüfung des starken Namens. (Ausnahme von HRESULT: 0x8013141A)

-----------------

bei ZetaProducer.Main.AppHost.MainHost.InitializeInstance()
   bei ZetaProducer.Main.AppHost.MainHost.process()

FileLoadException
{
                Message="Die Datei oder Assembly \\"Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\\" oder eine Abhängigkeit davon wurde nicht gefunden. Fehler bei der Überprüfung des starken Namens. (Ausnahme von HRESULT: 0x8013141A)",
                FileName="Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
                FusionLog="",
                Data=
                [
                ]
,
                InnerException=SecurityException
                {
                               Action=0,
                               PermissionType=null,
                               FirstPermissionThatFailed=null,
                               PermissionState=null,
                               Demanded=null,
                               GrantedSet=null,
                               RefusedSet=null,
                               DenySetInstance=null,
                               PermitOnlySetInstance=null,
                               FailedAssemblyInfo=null,
                               Method=null,
                               Zone=MyComputer,
                               Url=null,
                               Message="Fehler bei der Überprüfung des starken Namens. (Ausnahme von HRESULT: 0x8013141A)",
                               Data=
                               [
                               ]
,
                               InnerException=null,
                               TargetSite=null,
                               StackTrace=null,
                               HelpLink=null,
                               Source=null,
                               HResult=-2146233318
                },
                TargetSite=RuntimeMethodInfo: InitializeInstance,
                StackTrace="   bei ZetaProducer.Main.AppHost.MainHost.InitializeInstance()\\r\\n   bei ZetaProducer.Main.AppHost.MainHost.process()",
                HelpLink=null,
                Source="producer-core",
                HResult=-2146233318
}
                -->Fehler bei der Überprüfung des starken Namens. (Ausnahme von HRESULT: 0x8013141A)System.Security.SecurityException

-----------------

Fehler bei der Überprüfung des starken Namens. (Ausnahme von HRESULT: 0x8013141A)

-----------------

SecurityException
{
                Action=0,
                PermissionType=null,
                FirstPermissionThatFailed=null,
                PermissionState=null,
                Demanded=null,
                GrantedSet=null,
                RefusedSet=null,
                DenySetInstance=null,
                PermitOnlySetInstance=null,
                FailedAssemblyInfo=null,
                Method=null,
                Zone=MyComputer,
                Url=null,
                Message="Fehler bei der Überprüfung des starken Namens. (Ausnahme von HRESULT: 0x8013141A)",
                Data=
                [
                ]
,
                InnerException=null,
                TargetSite=null,
                StackTrace=null,
                HelpLink=null,
                Source=null,
                HResult=-2146233318
}

Ich habe dann alle möglichen Dinge bei Google recherchiert, und alle Tipps haben nichts genützt:

Delayed-Signing war aus.

Im GAC wollte ich es auch nicht installieren.

Ursache

Die effektive Ursache war dann, dass ich fälschlicherweise auf die Version 7.0.3300.0 verlinkt habe, wohingegen 7.0.3300.1 wohl korrekt/benötigt war.

Ich habe gesucht und es gab zig Versionen von der „Microsoft.mshtml.dll“ in meinem „C:\Program Files (x86)“-Ordner.

Interessanterweise gab es mehrere Dateien mit derselben Versionsnummer aber anderen Dateigrößen (WTF?). Ich habe mich dann für die mit 7,65 MB (8.022.976 Bytes) entschieden (Anzeige „7.835 KB“ in Windows Explorer).

Zur Sicherheit habe ich auch noch die „stdole.dll“ mit 31,4 KB (32.192 Bytes) mit genommen (Anzeige „32 KB“ in Windows Explorer).

Lösung

Die Lösung sah dann so aus, dass ich in meinem Projekt die Referenz gelöscht und auf die neuere Version gebogen habe.

Update 1

Jetzt gab es doch noch andere Exceptions mit dieser Version:

„dynamic operations can only be performed in homogenous appdomain“

In deutsch:

„Dynamische Vorgänge können nur in einer homogenen AppDomain durchgeführt werden.“

Laut Stack Overflow hat das wohl was mit der Legacy CAS Policy zu tun.

Ich bin deshalb zurück auf Version 7.0.3300.0 mit 7,63 MB (8.007.680 Bytes). Bei Zeta Test Management läuft die wohl gut. Mal gucken, ob auf meinem Testsystem der Fehler auch wieder auftaucht.