Frage

Ich rufe eine non-.NET dll von meinem Projekt P / Invoke verwenden, was bedeutet, dass die DLL immer in der EXE das Verzeichnis vorhanden sein muss.

Gibt es eine Möglichkeit Visual Studio dieser Abhängigkeit zu erzählen, so dass es automatisch die DLL in das Ausgabeverzeichnis kopiert wird beim Kompilieren, und schließt automatisch die DLL im Setup? Oder muss ich dies manuell tun?

War es hilfreich?

Lösung

können Sie kopieren / link diese Datei (en) auf das Projekt und in Eigenschaften festlegen Fenster "Aktion Build" auf "None" und "Copy to Output Directory" auf "Kopieren, falls neueren" oder "Copy immer".

Sie können auch verwenden, um ein "Pre-Build-Events" und "Post-Build-Event", wo Sie alle Batch-Skripten angeben können.

I prefere die zweite Option, da auf diese Weise flexibler als der erste ist.

Sie können auch eine MSBuild-Datei ändern und eine neue Aufgabe hinzufügen, um die Datei zu kopieren (s).

Andere Tipps

Sie können einfach die DLL zu Ihrem Projekt hinzufügen.

Wählen Sie den Properties Bereich für diese Datei und legen Build Action Content und Copy to Output Directory Copy if newer.

Ich glaube, ein Problem mit nur einem DLL zu dem Projekt hinzuzufügen, ist, dass man verschiedene Versionen einer DLL müssen möglicherweise für Debug- und Release-Builds. Man könnte meinen, Sie beide Debug hinzufügen und Release-Versionen der DLL in die Datei, und basierend auf Konfigurationen, die unangemessenen eine ausschließen, aber ich konnte nicht einen Weg zu tun, dass finden. Ich bin mit Visual Studio 2010. Ich bin sicher, dies in den alten Tagen mit VS6 gearbeitet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top