Как автоматически опубликовать веб-сайт на сборке в Visual Studio 2008?

Я хочу быть в состоянии автоматически опубликовать к локальной папке каждый раз, когда веб-проект asp.net mvc 2 разрабатывается.

Я использую Visual Studio 2008.

23
задан Rohit 14 February 2010 в 19:59
поделиться

4 ответа

Самый простой способ автоматизировать функциональность, включенную в действие Visual Studio "опубликовать", доступное из меню "Сборка", - это использовать проект веб-развертывания . Есть еще один для VS2005. По сути, это дополнительный проект, который вы добавляете в свое решение, которое будет нацелено на ваш веб-проект и после сборки опубликует ваш веб-проект как часть процесса сборки. Это упрощает автоматическое создание сайта как часть сборки без использования MSBuild (хотя MSBuild не так уж и сложен).

5
ответ дан 29 November 2019 в 02:44
поделиться

Ну вы могли бы сделать это с MSBuild в событии post-build.

Но вы уверены, что хотите это сделать? Это замедлит работу, и, возможно, вам не нужно публиковать каждую сборку? Почему бы просто не запустить сайт в IIS вместо Cassini.

13
ответ дан 29 November 2019 в 02:44
поделиться

Вот как я это делаю в своем проекте веб-сайта. Обратите внимание, что это будет скопировано в папку; если вы хотите публиковать через FTB, WebDav или SSH, вам необходимо использовать задачу Exec вместо задачи Копировать и указать инструмент командной строки, который может развертывать файлы через желаемый протокол.

Кроме того, вы не можете редактировать задачу AfterBuild из настроек проекта в VS IDE. Вам нужно открыть его в Блокноте или в вашем любимом текстовом / XML-редакторе. (Вы даже можете использовать VS, если закроете решение и заставите его открыть файл с помощью редактора XML: -))

Также есть цель сборки, которая вызывает AspNetCompiler , который у меня сейчас выключен, но вы можете легко включить его с помощью значения свойства MvcBuildViews .

  <PropertyGroup>
    <MvcBuildViews>false</MvcBuildViews>
    <DropPath>..\..\drop\</DropPath>
  </PropertyGroup>
  <Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
  </Target>
  <Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler">
    <ConvertToAbsolutePath Paths="$(DropPath)">
      <Output TaskParameter="AbsolutePaths" ItemName="FullDropPath" />
    </ConvertToAbsolutePath>
    <Message Importance="High" Text="Binplacing -&gt; @(FullDropPath)" />
    <ItemGroup>
      <Binaries Include="$(OutputPath)**\*.*" />
    </ItemGroup>
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Compile)" DestinationFiles="@(Compile->'$(DropPath)%(Identity)')" />
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Content)" DestinationFiles="@(Content->'$(DropPath)%(Identity)')" />
    <Copy SkipUnchangedFiles="True" SourceFiles="@(EntityDeploy)" DestinationFiles="@(EntityDeploy->'$(DropPath)%(Identity)')" />
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Binaries)" DestinationFiles="@(Binaries->'$(DropPath)%(Identity)')" />
  </Target>
2
ответ дан 29 November 2019 в 02:44
поделиться

Вариант 1. Переключитесь с круиз-контроля на JetBrains TeamCity (вы не пожалеете!). В TeamCity есть опция Артефакты, которая ...

«Артефакты - это файлы, созданные сборкой. После завершения сборки TeamCity ищет артефакты в каталоге проверки сборки в соответствии с указанными шаблонами артефактов. Соответствующие файлы затем загружаются в сервер, где они становятся доступными для загрузки »

Вариант 2: Создайте задачу в Круиз-контроле для выполнения XCOPY после завершения сборки.

<tasks>
    <msbuild>
       ... here's your main build ...
    </msbuild>

  <exec>
    ... define your XCOPY or other executable task here ...
    <buildTimeoutSeconds>900</buildTimeoutSeconds>
  </exec>

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

0
ответ дан 29 November 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: