Wie überprüft man die DLL-Abhängigkeit?
Manchmal, wenn ich mache ein kleines Projekt bin ich nicht vorsichtig genug und versehentlich fügen Sie eine Abhängigkeit für eine DLL, die mir nicht bekannt sind. Wenn ich das Schiff dieses Programm zu einem Freund oder anderen Menschen, die "es funktioniert nicht", weil "einige DLL" fehlt. Dies ist natürlich, weil das Programm finden Sie die DLL auf meinem system, aber nicht auf Ihnen.
Gibt es ein Programm/Skript, das Scannen kann eine ausführbare Datei für die DLL-Abhängigkeiten oder führen Sie das Programm in einem "sauberen" DLL-free-Umgebung für das testen, um zu verhindern, dass diese oops Situationen?
InformationsquelleAutor der Frage orlp | 2011-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen dependency walker: http://www.dependencywalker.com/
InformationsquelleAutor der Antwort Luchian Grigore
dumpbin
von Visual Studio-tools (VC\bin-Ordner) kann hier helfen:InformationsquelleAutor der Antwort JeffRSon
Kann ich nur empfehlen, interessante Lösung für Linux-fans. Nachdem ich diese erkundet Lösung, ich habe den Wechsel von DependencyWalker.
Können Sie Ihre Lieblings -
ldd
über Windows-bezogenenexe
dll
.Dazu zu installieren, müssen Sie Cygwin (grundlegende installation ohne zusätzliche Pakete erforderlich) auf der Windows-und nur dann beginnen
Cygwin Terminal
. Jetzt starten Sie Ihre Lieblings-Linux-Befehle, einschließlich:InformationsquelleAutor der Antwort troyane
InformationsquelleAutor der Antwort Artyom
Ist die sicherste Sache ist, ein paar saubere virtuelle Maschine, auf der Sie testen Sie Ihr Programm. Auf jede version, die Sie möchten, um zu testen, wiederherstellen der VM in seinen ursprünglichen sauberen Wert. Dann installieren Sie Ihr Programm mit den setup, und sehen, ob es funktioniert.
Dll Probleme haben verschiedene Gesichter. Wenn Sie Visual Studio verwenden und dynamisch mit der CRT verknüpft, müssen Sie verteilen die CRT-DLLs. Aktualisieren Sie Ihre VS und Sie zu verteilen, eine andere version der CRT. Nur die überprüfung von Abhängigkeiten ist nicht genug, verpassen Sie vielleicht die. Tun, eine vollständige Installation auf eine saubere Maschine ist die einzige sichere Lösung, IMO.
Wenn Sie nicht wollen, um das setup eine full-geblasen test-Umgebung und Windows 7, die Sie verwenden können XP-Modus wie die erste saubere Maschine, und XP-Mehr zum duplizieren der VM.
InformationsquelleAutor der Antwort eran
Auf dem Entwicklungscomputer auszuführen, können Sie das Programm und führen Sie Sysinternals Process Explorer. Im unteren Bereich, es wird Ihnen zeigen, die geladenen DLLs und die aktuellen Wege, die nützlich für eine Reihe von Gründen. Wenn Sie ausführen, aus Ihrer Bereitstellung-Paket, es würde zeigen, welche DLLs verwiesen wird, in der falschen Pfad (also nicht richtig verpackt).
Derzeit, unser Unternehmen verwendet Visual Studio Installer-Projekte laufen und die Abhängigkeitsstruktur und die Ausgabe als lose Dateien das Programm. In VS2013, das ist jetzt eine Erweiterung: https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d. Wir dann packen Sie diese losen Dateien in ein umfassenderes installer aber zumindest das setup-Projekt alle dot net Abhängigkeiten und lässt Sie in dem spot und warnt Sie, wenn Dinge fehlen.
InformationsquelleAutor der Antwort Shiv
In der Vergangenheit (d.h. WinXP Tage), die ich verwendet, um zu hängen/Vertrauen auf DLL-Dependency Walker (depends.exe), aber es gibt Zeiten, da bin ich noch nicht in der Lage, um zu bestimmen, die DLL-Problem(en). Im Idealfall würden wir gerne herausfinden, bevor die Laufzeit von Prüfungen, aber wenn das nicht behoben wird (oder zu viel Zeit), können Sie versuchen, die Aktivierung der "loader " snap" wie beschrieben auf http://blogs.msdn.com/b/junfeng/archive/2006/11/20/debugging-loadlibrary-failures.aspx und https://msdn.microsoft.com/en-us/library/windows/hardware/ff556886(v=vs. 85).aspx und kurz erwähnt LoadLibrary schlägt fehl; GetLastError keine Hilfe
ACHTUNG: ich vergeigt habe meine Fenster in die Vergangenheit herumalbern mit gflag machen Sie kriechen auf Ihren Knien, Sie wurden gewarnt.
Hinweis: "Loader-snap" ist pro Prozess, so dass die UI aktivieren, bleiben nicht markiert ist (verwenden cdb oder glfags -i)
InformationsquelleAutor der Antwort HidekiAI
Suchen Sie bitte "depends.exe" in google, es ist ein kleines Tool, um diese zu bewältigen.
InformationsquelleAutor der Antwort shiying yu
Wenn Sie den Quellcode haben, können Sie mit ndepend.
http://www.ndepend.com/
Es ist teuer und macht eine Menge mehr als die Analyse von Abhängigkeiten, so dass es möglicherweise overkill für das, was Sie suchen.
InformationsquelleAutor der Antwort Jesse
NDepend wurde bereits von Jesse (wenn Sie analysieren .NET-code) aber mal erklären, wie genau es helfen kann.
In NDepend-Projekt-Eigenschaften " können Sie festlegen, welche Anwendung Baugruppen zu analysieren (in grün) und NDepend ableiten, dass Third-Party-Baugruppen verwendet, die durch Anwendung diejenigen (in blau). Eine Liste von Verzeichnissen, wo nach Anwendung und Drittanbieter-Assemblys zur Verfügung.
Wenn Sie ein Drittanbieter-assembly nicht gefunden werden in diesen Verzeichnissen, es wird in den Fehler-Modus. Zum Beispiel, wenn ich entfernen .NET Fx Verzeichnis
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
ich kann sehen, dass .NET Fx third-party-Baugruppen sind nicht behoben:Disclaimer: ich arbeite für NDepend
InformationsquelleAutor der Antwort Patrick from NDepend team