I’m using the following post build actions in a project, to merge a lib into my application:
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
This works fine. Now I have an Installer project and added the Project Output. I would expect that the “Primary Output from ” is used, i.e. the exe in /bin/Release . But actually instead of /bin/release/myApp.exe , /obj/release/myApp.exe is used.
Does anyone know if I can change this behavior and use the output in /bin/release for the installer project? Thanks.
Seems there is no real solution for this problem, but a workaround exists. I created a ticket on Microsoft connect: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=428898
Microsofts anwser:
Hi,
In order to execute those post build actions, you will need to put them in a batch file and then add the appropiate command to invoke the batch file in the post build event dialog. I see that there are several instances in the script with references to a number of Visual Studio variables. Since we do not expose those variables as environment variables, you will have to pass them as parameters to the batch file.
I hope that helps!
Candy Chiang
Program Manager – Visual Studio