Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

Хорошо, вы могли бы сделать это с MSBuild в событии после сборки.

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

Ответ 3

Шаг 1. Убедитесь, что у вас есть веб-проект.

Шаг 2. Перейдите в меню "Просмотр" → "Панели инструментов" → "Публикация веб-сайтов".

Кнопка публикации кнопки публикации на панели инструментов будет делать то, что вы хотите... создать и опубликовать за один шаг.

Ответ 4

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

Кроме того, вы не можете редактировать задачу 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>

Ответ 5

Вариант 1: Переключитесь с Cruise Control на JetBrains TeamCity (вы не пожалеете!). В TeamCity есть опция Artifacts, которая...

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

Вариант 2. Создайте задачу в Cruise Control, чтобы выполнить XCOPY после завершения сборки.

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

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

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