Frage

Ich verwende die folgenden Post -Build -Aktionen in einem Projekt, um eine LIB in meine Bewerbung zusammenzuführen:

IF $(ConfigurationName) == Debug GOTO end
cp $(TargetPath) $(TargetDir)app_unmerged.exe
del $(TargetPath)
"C:\Program Files\Microsoft\ILMerge\ilmerge.exe" /internalize $(TargetDir)MyApp_unmerged.exe $(TargetDir)someLib.dll /out:$(TargetDir)myApp.exe
del $(TargetDir)myApp_unmerged.exe $(TargetDir)someLib.dll
:end

Das funktioniert gut. Jetzt habe ich ein Installationsprojekt und fügte die Projektausgabe hinzu. Ich würde erwarten, dass die "Primärausgabe von" verwendet wird, dh die exe in /bin /release. Aber tatsächlich wird anstelle von /bin/release/myapp.exe /obj/release/myapp.exe verwendet.

Weiß jemand, ob ich dieses Verhalten ändern und die Ausgabe in /bin /Release für das Installationsprojekt verwenden kann? Vielen Dank.

War es hilfreich?

Lösung 3

Es scheint, dass es keine wirkliche Lösung für dieses Problem gibt, aber es gibt eine Problemumgehung. Ich habe ein Ticket für Microsoft Connect erstellt: https://connect.microsoft.com/visualstudio/feedback/viewfeedback.aspx?feedbackid=428898

Microsofts Anwser:

Hi,

Um diese Post -Build -Aktionen auszuführen, müssen Sie sie in eine Stapeldatei einfügen und dann den Befehl für die Anerkennung hinzufügen, um die Stapeldatei im Dialogfeld "Post -Build -Ereignis" aufzurufen. Ich sehe, dass es im Skript mehrere Instanzen mit Verweisen auf eine Reihe von Visual Studio -Variablen gibt. Da wir diese Variablen nicht als Umgebungsvariablen enthüllen, müssen Sie sie als Parameter an die Stapeldatei übergeben.

Ich hoffe das hilft!

Candy Chiang -Programmmanager - Visual Studio

Andere Tipps

Ich löste das Problem an. Anwenden Sie Ilmerge in /obj-Ordner an. Dies ist meine Konfiguration nach dem Bau von Ereignissen:

Kopieren Sie $ (projectDir) obj $ (plattformname) $ (configurationName) $ (targetFileName) $ (targetdir) temp.exe $ (lösungsdir) lib ilmerge /Wildcards /t: exe /out: "$ (projectdir) obj $ (plattformname) $ (configurationName) $ (targetFileName) "$ (targetdir) temp.exe" "$ (targetdir) log4net.dll" .exe

Ich stelle die Dateien explizit ein, was bedeutet, dass die Datei .exe/.dll, anstatt das Setup -Projekt zu verwenden, explizit.
Das funktioniert ziemlich gut. Ich kann steuern, welche Datei eingeben würde, und die relativen Pfade des Setup -Projekts, damit das Setup -Projekt für andere Maschinen verwendet werden kann.

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