2009-05-20 7 views
0

Ich verwende mshtml, um HTML in meiner ASP.NET-MVC-Anwendung zu analysieren. Funktioniert hervorragend auf meiner Entwicklungsmaschine, auf der VS2008 Professional installiert ist. Funktioniert hervorragend auf meiner Staging-Maschine, auf der VS Express 2008/WebDev installiert ist. Es wird jedoch eine FileNotFoundException ausgelöst, wenn versucht wird, das COM-Objekt auf dem Produktionsserver zu laden, der keine Versionen von Visual Studio enthält.Wie verwende ich MSHTML auf einem Computer, auf dem Visual Studio nicht installiert ist?

Exception type: FileNotFoundException 
    Exception message: Could not load file or assembly 

'Microsoft.mshtml, Version = 7.0.3300.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder eine ihrer Abhängigkeiten. Das System kann die angegebene Datei nicht finden.

Ich möchte Visual Studio nicht auf der Produktionsbox installieren. Ich habe eine suggestion gelesen, die C: \ Programme \ Common Files \ Merge Module \ vs_piaredist.exe löst dieses Problem, aber dieses Verzeichnis existiert nicht auf meiner Produktionsbox. Wie kann ich mshtml auf der Produktionsmaschine verwenden?

+0

vs_piaredist.exe existiert nicht auf dem Staging oder dev Maschinen entweder zu laufen, aber es gibt eine Datei vs90_piaredist auf der Dev-Maschine genannt. –

Antwort

1

Mit vs90_piaredist von der Dev-Maschine scheint die Lösung zu sein. Die Interop-Assembly wird als Microsoft.mshtml.dll bezeichnet und befindet sich unter C: \ Programme \ Microsoft.NET \ Primary Interop Assemblys. Beim Ausführen von vs90_piaredist wurde dieses Verzeichnis auf dem Produktionsrechner erstellt und 5 Interop-DLLs, einschließlich Microsoft.mshtml.dll, dort platziert.

Diese thread hatte eine gute Diskussion über das Thema.

0

Ist nicht mshtml IE abhängig? Welche Version von IE ist auf der Produktionsbox installiert? Ziehen Sie ein Upgrade auf atleast 6

+0

IE7. Die mshtml.dll sitzt im system32 dir, aber aus irgendeinem Grund kann die Anwendung es nicht sehen. –

0

IE ist nicht verwalteten Code, so gibt es eine Interop-Schicht sein muss von nicht verwalteten verwaltet zu gehen. Die Primary Interop Assembly (PIA) ist eine, die normalerweise vom Hersteller geliefert wird. Dies ist, warum Sie vorgeschlagen werden, um die piaredist.exe