VS2010: Может ли быть несколько, если в событии после сборки?
У нас есть что-то вроде этого:
if "Debug"=="$(ConfigurationName)"
(
goto :nocopy
)
else if "Release"=="$(ConfigurationName)"
(
del "$(TargetPath).config"
copy "$(ProjectDir)\App.Release.config" "$(TargetPath).config"
)
else if "ReleaseBeta"=="$(ConfigurationName)"
(
del "$(TargetPath).config"
copy "$(ProjectDir)\App.ReleaseBeta.config" "$(TargetPath).config"
)
else if "ReleaseProduction"=="$(ConfigurationName)"
(
del "$(TargetPath).config"
copy "$(ProjectDir)\App.ReleaseProduction.config" "$(TargetPath).config"
)
:nocopy
Я пробовал, но он не работает. Код ошибки - 255.
Ответы
Ответ 1
У вас может быть столько условных операторов, сколько хотите, просто отделите их по новой строке и потеряйте еще
Итак, измените
if "Debug"=="$(ConfigurationName)"
(
goto :nocopy
)
else if...
To
if "Debug" == "$(ConfigurationName)" (goto :nocopy)
if "Release" ==" $(ConfigurationName)" (
del "$(TargetPath).config"
copy "$(ProjectDir)\App.Release.config" "$(TargetPath).config" )
if ...
и он будет компилироваться и работать просто отлично
Примечание. Команды будут интерпретироваться по очереди так же, как пакетный файл DOS, поэтому важно разместить открывающую скобку "(" в той же строке, что и оператор if и закрывающая скобка ")" в той же строке, что и последняя команда в блоке.
Ответ 2
Если ваша логика пост-сборки усложняется, я бы предложил переместить ее во внешний файл. Например, следующее событие после сборки:
CALL "$(ProjectDir)PostBuild.cmd" $(ConfigurationName)
выполняет командный файл PostBuild.cmd в каталоге проекта, передавая $(ConfigurationName) в качестве параметра. Вы также можете передать другие параметры, такие как $(TargetPath).
Затем вы можете реализовать все, что хотите, включая несколько операторов if и, что более важно, отлаживать его без запуска сборки Visual Studio.