Настроить публикацию для ASP.NET - PullRequest
1 голос
/ 11 марта 2019

У меня есть проект asp.net, и мне нужно запускать код после каждой публикации.

Я попытался выполнить это с помощью способов:

  1. Использование файла проекта vs
  2. Использование внешнего инструмента сборки Cake (c # make)

    1.) Итак, найдено несколько тем, связанных с этой проблемой:

Так как я предложил, я добавил следующий код в файл моего проекта:

  <Target Name="BeforePublish">
    <Message Text="BeforePublish"></Message>
    <Warning Text="BeforePublish"></Warning>
  </Target>
  <Target Name="AfterPublish">
    <Message Text="AfterPublish"></Message>
    <Warning Text="AfterPublish"></Warning>
  </Target>
  <Target Name="MSDeployPublish" >
    <Message Text="MSDeployPublish"/>
    <Warning Text="MSDeployPublish"/>
  </Target>
  <Target Name="PipelinePreDeployCopyAllFilesToOneFolder" >
    <Message Text="PipelinePreDeployCopyAllFilesToOneFolder" />
    <Warning Text="PipelinePreDeployCopyAllFilesToOneFolder" />
  </Target>
  <Target Name="BeforeBuild">
    <Message Text="BeforeBuild"></Message>
    <Warning Text="BeforeBuild"></Warning>
  </Target>
  <Target Name="AfterBuild">
    <Message Text="AfterBuild"></Message>
    <Warning Text="AfterBuild"></Warning>
  </Target>

Но выполняется только до и после сборки. Все остальные цели полностью игнорируются. Может быть, это потому, что эти другие темы используют VS 2010 и 2012. Есть ли способ сделать это в VS 2017?

2.) Когда я использую следующий код в задаче, я не получаю такой же вывод, как когда бы я скомпилировал его с VS.

   MSBuild(projectFile, new MSBuildSettings()
   .WithProperty("OutDir", publishDir)
   .WithProperty("DeployTarget", "WebPublish")
   .WithProperty("DeployOnBuild", "true")
   .WithProperty("WebPublishMethod", "FileSystem")
   .WithProperty("Configuration", "Release")
   );

Поэтому это тоже нереальное решение.

Я благодарен за любую помощь, чтобы заставить это работать так или иначе.

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

1.) Итак, нашел несколько тем, связанных с этой проблемой.Поэтому, как предложено, я добавил следующий код в мой файл проекта.На самом деле, после моего теста в vs2017, из выходного журнала с подробным, что я могу найти при публикации, как на фото ниже:

enter image description here enter image description here

1. Похоже, что в VS2017 при публикации проекта в IDE нет действительной цели публикации для переопределения или AfterTargets.Поэтому я боюсь, что вы не можете достичь этой цели, публикуя в VS.

2. Вместо этого, я думаю, вы можете рассмотреть возможность использования инструмента msbuild.Добавьте приведенный ниже тестовый целевой скрипт в свой профиль публикации (для меня: FolderProfile.pubxml):

<Project...>
...
  <Target Name="Test" AfterTargets="WebFileSystemPublish">
    <Message Text="I'm a test target after webpublish"/>
    <Move SourceFiles="C:\Ase\favicon.ico" DestinationFolder="C:\tomorrow"/>
  </Target>
</Project>

Откройте командную строку разработчика для vs2017 и введите команду, например:

msbuild C:\xxx\WebApplication55\WebApplication55.sln /p:DeployOnBuild=true /p:PublishProfile=C:\xxx\repos\WebApplication55\WebApplication55\Properties\PublishProfiles\FolderProfile.pubxml 

Itзапустит цель теста после процесса webpublish.

2.) Когда я использую следующий код в задаче, я не получаю такой же вывод, как когда я скомпилировал бы его с VS.Не уверен, что вы используете этот код для чего.Но вы можете использовать тестовую цель, чтобы делать то, что вы хотите. Добавление MSBuild Task в тестовую цель может достичь этой цели для вашего # 2.

И, как вы упомянули, у вас есть некоторыекод, сначала скомпилируйте этот код в .exe, и добавьте Командная задача в цель теста может помочь.Кроме того: согласно вашей информации выше, похоже, вы используете файловую систему и asp.net, поэтому я использую веб-приложение asp.net для тестирования (не ядро ​​.net).Ожидается обратная связь.

0 голосов
/ 11 марта 2019

Это зависит от того, что вы хотите сделать после, но если вы хотите, чтобы ваш код запускался после публикации, вам нужно поставить задачу после одной из целей из Microsoft.Web.Publishing.targets (найти файл, чтобы увидеть полный список целей). Обычно вам нужно AfterTargets="MSDeployPublish"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...