Ermitteln von Assembly-Dependencies – oder „Wie werde ich diese verd*** FileNotFound-Exception los?“

Ich ärgere mich momentan mit einem Projekt herum, welches ich nicht problemlos deployen kann. Ich verwende dazu Interop-Technologien aus C++/CLI.

Leider läßt sich das Programm nicht auf einem frisch installierten Zielrechner ausführen. Irgendeine Abhängigkeit muss es noch geben, die bei Installer nicht berücksichtigt wurde.

Aus diesem Grund habe ich mich etwas mit Assembly-Abhängigkeiten (bzw. Assembly-Dependencies) beschäftigen müssen. Dabei bin ich über ein nützliches Tool auf CodeProject gestoßen: Assemlby Dependencies von Natty Gur.

Eine weitere Möglichkeit, Abhängigkeiten der Assembly aufzulösen, ist der Dependency Walker. Dieser ist normalerweise Bestandteil von Visual Studio. Doch man kann ihn in der aktuellen Version von der Dependency Walker-Webseite herunterladen: http://www.dependencywalker.com/

Dependency Walker Screenshot

Der Dependency Walker kommt eigentlich aus der unmanaged (C++-) Welt. Mit ihm kann man sich die DLLs anzeigen lassen, die mit der Applikation zusammen hängen. Das Auflösungsverfahren ist dabei mehrstufig und es wird farblich hervorgehoben, welche DLLs fehlen. Es werden dabei alle Win32-Module in einer baumartigen Struktur dargestellt. Die neueren Version vom Dependency Walker können auch mit .NET Assemblies umgehen (siehe FAQ).

reflector.pngDann gibt es noch die Möglichkeit, den Reflector von Lutz Roeder einzusetzen. Diesen kann man kostenlos auf der Webseite http://www.aisto.com/roeder/dotnet/ herunterladen. Es gibt auch eine große Menge an AddIns für dieses Tool.

Und last but not least gibts noch den Assembly Binding Log Viewer, den ich ja bereits in einem anderen Posting vorgestellt habe.

In zahlreichen Blogs habe ich einen Tipp gelesen, der darin besteht, den Registry-Schlüssel HKLMSoftwareMicrosoftFusionForceLog auf „1“ (DWORD) zu setzen.

Auf CodeProject habe ich vor Kurzem noch einen netten Artikel gefunden, der die Vorgehensweise beim Laden und Binden von Assemblies beschreibt: http://www.codeproject.com/install/assemblydeployment.asp

Wirklich sehr lesenswert!

[Update vom 03.02.2008]

Das Problem, warum sich meine Applikation nicht auf dem Zielrechner deployen lies, war die fehlende Installation von Microsoft Visual C++ SP1 Redistributables. Es hat leider wirklich sehr sehr lange gedauert, bis ich dem Problem auf die Schliche gekommen bin :-(, denn auf meiner Entwickler-Maschine ist ja ALLES installiert.

Download der Redistributables: http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647

Ein Gedanke zu „Ermitteln von Assembly-Dependencies – oder „Wie werde ich diese verd*** FileNotFound-Exception los?“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert