Поделиться через


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

Том Дайкстра

Скачивание начального проекта

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

Обзор

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

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

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

Сведения о странице с кодом шаблона

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

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

<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

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

Вы не будете развертывать другое изменение базы данных, поэтому отключите развертывание базы данных 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.
  • Вы можете успешно опубликовать один проект, когда другой даже не создает. Дополнительные сведения см. в статье о сбое msBuild потока stackoverflow с двумя пакетами.

Если вы указываете отдельный проект вместо решения, необходимо добавить параметр, указывающий версию 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 в блоге Sayed Hashimi.

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

Профиль публикации можно указать по имени или по полному пути к 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 : как задать свойство конфигурации в блоге Sayed Hashimi.

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

Чтобы развернуть в 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-адресу промежуточного сайта, а затем щелкните страницу "Сведения ", чтобы убедиться, что развертывание выполнено успешно.

Итоги

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

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

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