Самая простая задача в мире (см. ниже) не выполняется после публикации моего проекта веб-приложения. Любая идея почему?
<Target Name="AfterPublish">
<Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" />
</Target>
Самая простая задача в мире (см. ниже) не выполняется после публикации моего проекта веб-приложения. Любая идея почему?
<Target Name="AfterPublish">
<Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" />
</Target>
Примечание. Следующее относится к VS2010 и публикации проектов веб-приложений с использованием метода публикации "Web Deploy", выбранного в диалоговом окне "Build/Publish {projectname}".
Жюльен Хоарау прав в том, что "Опубликовать" НЕ является именем целевой задачи msbuild, вызванной в вышеуказанном случае; фактическое имя цели "MSDeployPublish" .
Следовательно, вам нужно определить элемент "Целевой" , значение атрибута "AfterTarget" : "MSDeployPublish" - "< Имя" не имеет значения (если оно уникально среди имен целей).
Вот как это сделать:
</Project>
добавьте элемент <Target Name="CustomPostPublishAction" AfterTargets="MSDeployPublish">
; выберите имя по вашему выбору для "CustomPostPublishAction".<Exec Command="..." />
.Пример:
<Target Name="CustomPostPublishActions" AfterTargets="MSDeployPublish" >
<Exec Command="echo Post-PUBLISH event: Active configuration is: $(ConfigurationName)" />
</Target>
Примечание:
<Target>
в общем случае см. http://msdn.microsoft.com/en-us/library/t50z2hka.aspxVisual Studio 2013. Публикация веб-приложения в файловой системе.
<Target Name="Moose" AfterTargets="GatherAllFilesToPublish" >
<Message Importance="high" Text="***Moooooooooooooooose***$(WPPAllFilesInSingleFolder)***$(TargetDir)" />
</Target>
Примечание. Убедитесь, что журнал сборки установлен как минимум на Детальный. Найдите его в разделе Инструменты → Параметры → Проекты и Solutinos → Build and Run → многословность вывода MSBuild. Диагностика также прекрасна, если вы хотите исследовать, какая цель сборки была последней, до фактического опубликования.
<Import ... />
Запустите MSBuild с подробной подробностью, чтобы понять, почему ваша цель игнорируется:
msbuild project.csproj /t:Target_to_Launch /v:d
AfterPublish
вызывается после Publish
target, но Publish
не является объектом, который вызывается при публикации веб-приложения. Publish
является целью публикации приложения ClickOnce.
Вам нужно будет найти цель, используемую при вызове Publish
в Visual Studio, она может быть Package
, WebPublish
...
Сейчас я немного ленив, чтобы выяснить беспорядок целей, чтобы найти правильный вариант для публикации на основе файлов (что вам может быть интересно). Тем временем вы можете определить цель AfterBuild в файле *.pubxml.
<Target Name="AfterBuild">
...
Я рекомендую также отключить свойство "DeleteExistingFiles", потому что, если вы копируете файлы в опубликованные каталоги, во время процесса публикации он делает что-то чистое.
<DeleteExistingFiles>False</DeleteExistingFiles>