ASP.NET веб-развертывания с помощью Visual Studio: развертывание из командной строки

Том Дайкстра (Tom Dykstra)

Скачать начальный проект

В этой серии руководств показано, как развернуть (опубликовать) веб-приложение ASP.NET для Служба приложений Azure веб-приложения или стороннего поставщика услуг размещения с помощью Visual Studio 2012 или Visual Studio 2010. Сведения о серии см. в первом руководстве этой серии.

Общие сведения

В этом руководстве показано, как вызвать конвейер веб-публикации Visual Studio из командной строки. Это полезно для сценариев, в которых требуется автоматизировать процесс развертывания , а не выполнять его вручную в Visual Studio, обычно с помощью системы управления версиями исходного кода.

Внесите изменения для развертывания

В настоящее время на странице О программе отображается код шаблона.

Страница

Вы замените его кодом, в котором отображается сводка о регистрации учащихся.

Откройте страницу About.aspx , удалите всю разметку внутри MainContentContent элемента и вставьте вместо нее следующую разметку:

<h2>Student Body Statistics</h2>
    <asp:ObjectDataSource ID="StudentStatisticsObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
        SelectMethod="GetStudentStatistics" DataObjectTypeName="ContosoUniversity.DAL.EnrollmentDateGroup">
    </asp:ObjectDataSource>
    <asp:GridView ID="StudentStatisticsGridView" runat="server" AutoGenerateColumns="False"
        DataSourceID="StudentStatisticsObjectDataSource">
        <Columns>
            <asp:BoundField DataField="EnrollmentDate" DataFormatString="{0:d}" HeaderText="Date of Enrollment"
                ReadOnly="True" SortExpression="EnrollmentDate" />
            <asp:BoundField DataField="StudentCount" HeaderText="Students" ReadOnly="True"
                SortExpression="StudentCount" />
        </Columns>
    </asp:GridView>

Запустите проект и выберите страницу О программе .

Страница About

Развертывание в test с помощью командной строки

Вы не будете развертывать другое изменение базы данных, поэтому отключите развертывание базы данных dbDacFx для базы данных aspnet-ContosoUniversity. Откройте мастер публикации в Интернете и в каждом из трех профилей публикации снимите флажок Обновить базу данных проверка на вкладке Параметры.

На начальной странице Windows 8 найдите командную строку разработчика для VS2012.

Щелкните правой кнопкой мыши значок командной строки разработчика для VS2012 и выберите запуск от имени администратора.

Введите следующую команду в командной строке, заменив путь к файлу решения путем к файлу решения:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Test

MSBuild создает решение и развертывает его в тестовой среде.

Выходные данные командной строки

Откройте браузер и перейдите по адресу http://localhost/ContosoUniversity, а затем щелкните страницу О программе , чтобы убедиться, что развертывание прошло успешно.

Если вы еще не создали учащихся в тесте, вы увидите пустую страницу под заголовком Статистика тела учащихся . Перейдите на страницу Учащиеся , нажмите кнопку Добавить учащегося и добавьте несколько учащихся, а затем вернитесь на страницу О программе , чтобы просмотреть статистику учащихся.

Снимок экрана: статистика тела учащихся на странице

Параметры командной строки ключа

Введенная команда передала путь к файлу решения и два свойства в MSBuild:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true 
/p:PublishProfile=Test

Развертывание решения и развертывание отдельных проектов

Указание файла решения приводит к сборке всех проектов в решении. При наличии нескольких веб-проектов в решении применяется следующее поведение MSBuild:

  • Свойства, указанные в командной строке, передаются в каждый проект. Таким образом, каждый веб-проект должен иметь профиль публикации с указанным именем. Если указать /p:PublishProfile=Testзначение , каждый веб-проект должен иметь профиль публикации с именем Test.
  • Вы можете успешно опубликовать один проект, когда другой проект даже не выполняет сборку. Дополнительные сведения см. в разделе сбой потока стекаoverflow MSBuild с двумя пакетами.

Если вы указываете отдельный проект вместо решения, необходимо добавить параметр, указывающий версию Visual Studio. Если вы используете Visual Studio 2012, командная строка будет выглядеть примерно так:

msbuild C:\ContosoUniversity\ContosoUniversity\ContosoUniversity.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:VisualStudioVersion=11.0

Номер версии Visual Studio 2010 — 10.0. Дополнительные сведения см. в статье Совместимость проектов Visual Studio и VisualStudioVersion в блоге Сайеда Хашими.

Указание профиля публикации

Профиль публикации можно указать по имени или по полному пути к PUBXML-файлу , как показано в следующем примере:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=C:\ContosoUniversity\ContosoUniversity\Properties\PublishProfiles\Test.pubxml

Методы веб-публикации, поддерживаемые для публикации из командной строки

Для публикации из командной строки поддерживаются три метода публикации:

  • MSDeploy — Публикация с помощью веб-развертывания.
  • Package — Публикация путем создания пакета веб-развертывания. Пакет необходимо установить отдельно от команды MSBuild, которая его создает.
  • FileSystem — публикация путем копирования файлов в указанную папку.

Указание конфигурации и платформы сборки

Конфигурация сборки и платформа должны быть заданы в Visual Studio или в командной строке. Профили публикации содержат свойства с именами LastUsedBuildConfiguration и LastUsedPlatform, но эти свойства невозможно задать, чтобы определить способ сборки проекта. Дополнительные сведения см. в разделе MSBuild: настройка свойства конфигурации в блоге Сайед Хашими.

Развертывание в промежуточное хранилище

Чтобы выполнить развертывание в Azure, необходимо добавить пароль в командную строку. Если вы сохранили пароль в профиле публикации в Visual Studio, он был сохранен в зашифрованном виде в файле .pubxml.user . MsBuild не обращается к файлу при развертывании из командной строки, поэтому необходимо передать пароль в параметре командной строки.

  1. Скопируйте необходимый пароль из файла PUBLISHSETTINGS , загруженного ранее для промежуточного веб-сайта. Пароль — это значение атрибута userPWD элемента Web Deploy publishProfile .

    Пароль веб-развертывания

  2. На начальной странице Windows 8 найдите командную строку разработчика для VS2012 и щелкните значок, чтобы открыть командную строку. (На этот раз вам не нужно открывать его от имени администратора, так как вы не выполняете развертывание в IIS на локальном компьютере.)

  3. Введите в командной строке следующую команду, заменив путь к файлу решения путем к файлу решения, а пароль — паролем:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    Обратите внимание, что эта командная строка содержит дополнительный параметр: /p:AllowUntrustedCertificate=true. В этом руководстве AllowUntrustedCertificate свойство должно быть задано при публикации в Azure из командной строки. После выпуска исправления этой ошибки этот параметр не потребуется.

  4. Откройте браузер и перейдите по URL-адресу промежуточного сайта, а затем щелкните страницу О программе , чтобы убедиться, что развертывание прошло успешно.

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

Развертывание в рабочую среду

Процесс развертывания в рабочей среде аналогичен процессу промежуточного хранения.

  1. Скопируйте необходимый пароль из файла PUBLISHSETTINGS , загруженного ранее для рабочего веб-сайта.

  2. Откройте командную строку разработчика для VS2012.

  3. Введите в командной строке следующую команду, заменив путь к файлу решения путем к файлу решения, а пароль — паролем:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Production /p:Password=hdNSWsbuqnwKafwlo7J5uqnwKafwlfNPt1DSqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    Для реального рабочего сайта, если также произошло изменение базы данных, вы обычно копируете файлapp_offline.htm на сайт перед развертыванием и удаляете его после успешного развертывания.

  4. Откройте браузер и перейдите по URL-адресу промежуточного сайта, а затем щелкните страницу О программе , чтобы убедиться, что развертывание прошло успешно.

Итоги

Вы развернули обновление приложения с помощью командной строки.

Снимок экрана: страница

В следующем руководстве вы увидите пример расширения конвейера веб-публикации. В примере показано, как развернуть файлы, которые не включены в проект.