How can I limit my post-build events to running only for one type of build? I'm using the events to copy DLLs to a local IIS virtual directory but I don't want this happening on the build server in release mode.
You can pass the configuration name to the post-build script and check it in there to see if it should run.
Pass the configuration name with $(ConfigurationName)
Checking it is based on how you are implementing the post-build step -- it will be a command-line argument
Add your post build event like normal. Then save you project, open it in Notepad (or your favorite editor) and add condition to the PostBuildEvent property group. Here's an example:
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PostBuildEvent>start gpedit</PostBuildEvent> </PropertyGroup>
Pre- and Post-Build Events run as a batch script. You can do a conditional statement on $(ConfigurationName)
.
For instance
if $(ConfigurationName) == Debug xcopy something somwhere
Like any project setting the buildevents can be configured per Configuration, just select the configuration you want to change in the dropdown of the Property Pages dialog and edit the post build step
@Michael L IF $(ConfigurationName) == Debug $(SolutionDir)reminify.bat
you need to use IF and not if
alternatively (since the events are put into a batch file & then called), use the following. (in the Build event box, not in a batch file):
if $(ConfigurationName) == Debug goto :debug
:release
signtool.exe ....
xcopy ...
goto :exit
:debug
' debug items in here
:exit
This way you can have events for any configuration, and still manage it with the macros rather than having to pass them into a batch file & remember that %1 is $(OutputPath) etc:
@Ryan
smnbss, like me, doesn't have sufficient reputation to add comments. (Either that, or I'm a dummy and can't figure out how to do it.)
FYI, you do not need to use goto. the shell IF command can be used with round brackets:
if $(ConfigurationName) == Debug (
copy "$(TargetDir)myapp.dll" "c:\delivery\bin" /y
copy "$(TargetDir)myapp.dll.config" "c:\delivery\bin" /y
) ELSE (
echo "why, Microsoft, why".
)