Wie kann Visual Studio eine DLL-Datei in das Ausgabeverzeichnis kopieren?
Ich habe ein Visual-Studio-C++ - Projekt, das sich auf eine externe DLL-Datei. Wie kann ich Visual Studio kopieren Sie diese DLL-Datei wird automatisch in das Ausgabeverzeichnis (debug/release) wenn ich das Projekt erstellen?
InformationsquelleAutor der Frage Mat | 2009-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie einen post-build-Aktion in Ihrem Projekt, und fügen Sie die Befehle zum kopieren der betreffende DLL. Die post-build-Aktion geschrieben werden als ein batch-Skript.
Die Ausgabe-Verzeichnis verwiesen werden kann, als
$(OutDir)
. Das Projekt-Verzeichnis ist erhältlich als$(ProjDir)
. Versuchen Sie, verwenden Sie relative Pfade, wo anwendbar, so dass Sie können kopieren oder verschieben Sie Ihre Projekt-Ordner, ohne die post-build-Aktion.InformationsquelleAutor der Antwort Adrien Plisson
$(OutDir) stellte sich heraus, dass Sie einen relativen Pfad in VS2013, so musste ich kombinieren Sie es mit $(ProjectDir), um den gewünschten Effekt erzielen:
BTW, du kannst einfach Debuggen der Skripte durch das hinzufügen von 'echo' am Anfang und beobachten Sie die erweiterten text in der build-Ausgabe-Fenster.
InformationsquelleAutor der Antwort Nesho Neshev
Die details in den Kommentaren oben hat bei mir nicht funktioniert (VS 2013), wenn Sie versuchen, kopieren Sie die Ausgabe-dll aus einer C++ - Projekt die release-und debug-Ordner von einem anderen C# - Projekt in der gleichen Projektmappe.
Hatte ich die folgenden add post-build-Aktion (Rechtsklick auf das Projekt hat .dll-Ausgabe), dann Eigenschaften -> Konfiguration-Eigenschaften -> build-Ereignisse -> post-build-event -> Befehl Linie
nun habe ich diese beiden Zeilen kopieren Sie die Ausgabe-dll in den beiden Ordnern:
InformationsquelleAutor der Antwort Sebastian
(Diese Antwort gilt nur für C# nicht C++, sorry, habe ich falsch verstanden, die ursprüngliche Frage)
Habe ich über die DLL-Hölle, wie dies vor. Meine Letzte Lösung war der Speicher im nicht verwalteten DLLs, die in der verwalteten DLL als binäre Ressourcen, und extrahieren Sie Sie in einen temporären Ordner, wenn das Programm startet, und löschen Sie Sie, wenn es wird entsorgt.
Diese sollte werden Teil der .NET oder pinvoke-Infrastruktur, da ist es so nützlich.... Es macht Ihr verwalteten DLL einfach zu verwalten, sowohl mit Xcopy oder als Projekt-Referenz, die in einer größeren Visual Studio-Lösung. Sobald Sie dies tun, werden Sie nicht haben, um sorgen über post-build-Ereignisse.
UPDATE:
Geschrieben ich hier den code in einer anderen Antwort https://stackoverflow.com/a/11038376/364818
InformationsquelleAutor der Antwort Mark Lakata