Как я могу ограничить запуск событий после сборки только для одного типа сборки?
Я использую события для копирования файлов DLL в локальный виртуальный каталог IIS, но я не хочу, чтобы это происходило на сервере сборки в режиме выпуска.
Как я могу ограничить запуск событий после сборки только для одного типа сборки?
Я использую события для копирования файлов DLL в локальный виртуальный каталог IIS, но я не хочу, чтобы это происходило на сервере сборки в режиме выпуска.
События до и после сборки запускаются как пакетный скрипт. Вы можете сделать условное заявление о $(ConfigurationName)
.
Например
if $(ConfigurationName) == Debug xcopy something somewhere
К вашему сведению, вам не нужно использовать goto. Команду shell IF можно использовать с круглыми скобками:
источник
"$(ConfigurationName)"
(обратите внимание на кавычки), если вы получите код ошибки 255$(ConfigurationName)
пусто (командная строка события после сборки).if "$(Configuration)" == "Debug"
работал на меня. Кстати, если вы хотите сделать что-то во всех других конфигах, используйтеif NOT "$(Configuration)" == "Debug"
.Добавьте ваше событие пост сборки, как обычно. Затем сохраните ваш проект, откройте его в блокноте (или в вашем любимом редакторе) и добавьте условие в группу свойств PostBuildEvent. Вот пример:
источник
cd "$(ProjectDir)"
расширен доcd ""
.<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$(ConfigurationName) == Debug"> <Exec Command="your command"/></Target>
. Макропеременные и все работает как обычно.В качестве альтернативы (поскольку события помещаются в пакетный файл, а затем вызываются), используйте следующее (в окне событий Build, а не в пакетном файле):
Таким образом, вы можете иметь события для любой конфигурации и по-прежнему управлять ими с помощью макросов, а не передавать их в пакетный файл, помните, что
%1
это так$(OutputPath)
и т. Д.источник
Error 1 The command "C:\MyProject\postbuild.bat" exited with code 99. MyProject
if
и использоватьgoto :$(ConfigurationName)
Visual Studio 2015: правильный синтаксис (оставьте его в одной строке):
Нет ошибки 255 здесь.
источник
Начиная с Visual Studio 2019, современный
.csproj
формат поддерживает добавление условия непосредственно кTarget
элементу:Пользовательский интерфейс не предоставляет способ настроить это, но он, кажется, безопасно оставить
Configuration
атрибут на месте, если вы вносите изменения через пользовательский интерфейс.источник
Вы можете передать имя конфигурации скрипту после сборки и проверить его там, чтобы увидеть, должен ли он работать.
Передайте имя конфигурации с помощью
$(ConfigurationName)
.Проверка основана на том, как вы реализуете шаг после сборки - это будет аргумент командной строки.
источник
Это работает для меня в Visual Studio 2015.
Я копирую все файлы DLL из папки, расположенной в папке библиотеки на том же уровне, что и папка моего решения, в целевой каталог создаваемого проекта.
Используя относительный путь из моего каталога проекта и поднимаясь по структуре папок в два шага с помощью .. \ .. \ lib
MySolutionFolder
.... MyProject
Lib
источник
Как и любой параметр проекта, builddevents могут быть настроены для каждой конфигурации. Просто выберите конфигурацию, которую вы хотите изменить, в раскрывающемся окне диалога «Страницы свойств» и отредактируйте шаг после сборки.
источник
В Visual Studio 2012 вы должны использовать (я думаю, в Visual Studio 2010 тоже)
$(ConfigurationName)
был указан как макрос, но не был назначен.Сравните: макросы для команд и свойств сборки
источник