Как создавать сценарии до публикации и после публикации в VS2010 - PullRequest
4 голосов
/ 21 ноября 2010

Я хотел бы создать сценарий, который выполняет некоторые действия, затем опубликовать сайт в рабочей среде и запустить другой сценарий в Visual Studio 2010.

Ответы [ 3 ]

4 голосов
/ 22 ноября 2010

Конечно, это возможно. Мне кажется, что вам нужно MSBuild . У него уже есть много заданий по умолчанию , таких как копирование, удаление и т. Д. Также есть много сторонних задач для MSBuild, таких как SDCTasks или Задачи сообщества

Например, здесь один из различных способов развертывания веб-сайта (с использованием SDCTasks). В этом примере будут построены как решение для веб-сайта, так и решение для веб-служб, и в случае успеха они будут опубликованы на каком-либо удаленном сервере и должным образом сконфигурированы с помощью файлов конфигурации версии выпуска.

   <Import Project="$(MSBuildExtensionsPath)\SDCTasks\Microsoft.Sdc.CommonWOBizTalk.tasks"/>
    ...
    <ItemGroup>
        <SolutionToBuild Include="$(BuildProjectFolderPath)/../../website.sln">
            <Targets></Targets>
            <Properties></Properties>
        </SolutionToBuild>

        <SolutionToBuild Include="$(BuildProjectFolderPath)/../../services.sln">
            <Targets></Targets>
            <Properties></Properties>
        </SolutionToBuild>

    </ItemGroup>

  <PropertyGroup>
    <PublishFolder>\\myservername\deployto</PublishFolder>
  </PropertyGroup>

  <Target Name="AfterCompile" DependsOnTargets="PublishWebSite;PublishServices;SetConfiguration"/>

  <Target Name="PublishWebSite">
    <Folder.CleanFolder Path="$(PublishFolder)" Force="True" />
    <Folder.CopyFolder Source="$(OutDir)_PublishedWebsites\MyWebSite" Destination="$(PublishFolder)" />
  </Target> 

  <Target Name="PublishServices">
    <MakeDir Directories="$(PublishFolder)\Services"/>
    <Folder.CopyFolder Source="$(OutDir)_PublishedWebsites\MyService" Destination= "$(PublishFolder)\ Services" />
  </Target>

  <Target Name="SetConfiguration">
      <Copy SourceFiles="$(OutDir)_PublishedWebsites\MyWebSite\WebRelease.config" DestinationFiles="$(PublishFolder)\web.config" />
      <Copy SourceFiles="$(OutDir)_PublishedWebsites\MyService\WebRelease.config" DestinationFiles="$(PublishFolder)\Services\web.config" />
  </Target>
0 голосов
/ 27 июля 2018

Поздний ответ, охватывающий часть «до публикации» (протестировано в рамках VS2017, но я думаю, что это должно работать и в предыдущих версиях):

  1. Открыть файл конфигурации веб-публикации (например, Test.pubxml)

  2. Определите цель, которая выполняет пользовательские сценарии, расположенные где-то в вашем проекте (например, некоторые сценарии Powershell во внутренней папке). Этот код должен быть заключен в тег Project после первого PropertyGroup:

    <PropertyGroup>
      <PipelineDependsOn>
        ExtBuild;
        $(PipelineDependsOn);
      </PipelineDependsOn>
    </PropertyGroup>
    
    <Target Name="ExtBuild">
      <Message Text="Building something else" Importance="high"/>
      <Exec Command="powershell.exe -file &quot;$(ProjectDir)\Publish\publish.ps1&quot;" />
    </Target>
    

Примечание: текущий каталог $(ProjectDir), поэтому будьте осторожны при включении других файлов ps1 из целевого

0 голосов
/ 21 ноября 2010

Я думаю, что вам нужен макрос , который будет выполнять действия перед вызовом публикации, а затем выполнять некоторые дополнительные действия.Если вы также используете TFS 2010, вы можете настроить определение сборки так, чтобы оно соответствовало тому, что вы ищете.

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