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


Исключение файлов и папок из развертывания

Джейсон Ли

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

Этот раздел является частью серии учебников, основанных на требованиях к развертыванию на предприятии вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения диспетчера контактов для представления веб-приложения с реалистичным уровнем сложности, включая приложение ASP.NET MVC 3, службу Windows Communication Foundation (WCF) и проект базы данных.

Метод развертывания в основе этих учебников основан на подходе с разделением файлов проекта, описанном в разделе Основные сведения о файле проекта, в котором процесс сборки управляется двумя файлами проекта: один содержит инструкции сборки, которые применяются к каждой целевой среде, а второй содержит параметры сборки и развертывания для конкретной среды. Во время сборки файл проекта для конкретной среды объединяется с файлом проекта, не зависящим от среды, чтобы сформировать полный набор инструкций по сборке.

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

При создании проекта веб-приложения в Visual Studio 2010 конвейер веб-публикации (WPP) позволяет расширить этот процесс сборки, упаковав скомпилированное веб-приложение в развертываемый веб-пакет. Затем можно использовать средство веб-развертывания служб IIS (веб-развертывание), чтобы развернуть этот веб-пакет на удаленном веб-сервере IIS или импортировать веб-пакет вручную с помощью диспетчера IIS. Этот процесс упаковки описан в статье Создание и упаковка проектов веб-приложений.

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

Что включается по умолчанию?

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

По умолчанию для этого параметра задано значение Только файлы, необходимые для запуска этого приложения.

При выборе параметра Только файлы, необходимые для запуска этого приложения, WPP попытается определить, какие файлы следует добавить в веб-пакет. В том числе:

  • Все выходные данные сборки для проекта.
  • Все файлы, помеченные действием сборки Содержимое.

Примечание

Логика, определяющая, какие файлы следует включить, содержится в этом файле:
%PROGRAMFILES%\MSBuild\Microsoft\VisualStudio\v10.0\Web\ Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets

Исключение определенных файлов и папок

В некоторых случаях требуется более точное управление тем, какие файлы и папки развертываются. Если вы заранее знаете, какие файлы нужно исключить, и исключение применяется ко всем целевым средам, можно просто установить для параметра Действие сборки каждого файла значение Нет.

Исключение определенных файлов из развертывания

  1. В окне Обозреватель решений щелкните файл правой кнопкой мыши и выберите пункт Свойства.
  2. В окне Свойства в строке Действие сборки выберите Нет.

Однако такой подход не всегда удобен. Например, может потребоваться изменить, какие файлы и папки будут включены в соответствии с целевой средой и из-за пределов Visual Studio. Например, в примере решения Диспетчера контактов просмотрите содержимое проекта ContactManager.Mvc:

Содержимое проекта ContactManager.Mvc.

  • Папка Internal содержит некоторые скрипты SQL, которые разработчик использует для создания, удаления и заполнения локальных баз данных в целях разработки. Ничего из этой папки не должно быть развернуто в промежуточной или рабочей среде.
  • Папка Scripts содержит несколько файлов JavaScript. Многие из этих файлов включены исключительно для поддержки отладки или предоставления IntelliSense в Visual Studio. Некоторые из этих файлов не следует развертывать в промежуточной или рабочей среде. Однако вы можете развернуть их в тестовой среде разработчика, чтобы упростить устранение неполадок.

Хотя вы можете управлять файлами проекта, чтобы исключить определенные файлы и папки, существует более простой способ. WPP включает механизм исключения файлов и папок путем создания списков элементов с именами ExcludeFromPackageFolders и ExcludeFromPackageFiles. Этот механизм можно расширить, добавив собственные элементы в эти списки. Для этого необходимо выполнить следующие общие действия:

  1. Создайте пользовательский файл проекта с именем [имя проекта].wpp.targets в той же папке, что и файл проекта.

    Примечание

    Файл WPP.targets должен идти в той же папке, что и файл проекта веб-приложения, например ContactManager.Mvc.csproj, а не в той же папке, что и любые пользовательские файлы проекта, используемые для управления процессом сборки и развертывания.

  2. В файле WPP.targets добавьте элемент ItemGroup .

  3. В элементе ItemGroup добавьте элементы ExcludeFromPackageFolders и ExcludeFromPackageFiles , чтобы исключить определенные файлы и папки при необходимости.

Ниже приведена базовая структура этого файла WPP.targets :

<Project ToolsVersion="4.0" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>   
    <ExcludeFromPackageFolders Include="[semi-colon-separated folder list]">
      <FromTarget>[arbitrary metadata value]</FromTarget>
    </ExcludeFromPackageFolders>
    <ExcludeFromPackageFiles Include="[semi-colon-separated file list]">
      <FromTarget>[arbitrary metadata value]</FromTarget>
    </ExcludeFromPackageFiles>
  </ItemGroup>
</Project>

Обратите внимание, что каждый элемент содержит элемент метаданных элемента с именем FromTarget. Это необязательное значение, которое не влияет на процесс сборки; он просто указывает, почему определенные файлы или папки были опущены, если кто-то просматривает журналы сборки.

Исключение файлов и папок из веб-пакета

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

Исключение файлов и папок из пакета веб-развертывания

  1. Откройте решение в Visual Studio 2010.

  2. В окне Обозреватель решений щелкните правой кнопкой мыши узел проекта веб-приложения (например, ContactManager.Mvc), наведите указатель на пункт Добавить, а затем выберите пункт Создать элемент.

  3. В диалоговом окне Добавление нового элемента выберите шаблон XML-файл .

  4. В поле Имя введите [имя проекта].wpp.targets (например, ContactManager.Mvc.wpp.targets) и нажмите кнопку Добавить.

    В поле Имя введите имя проекта.wpp.targets и нажмите кнопку Добавить.

    Примечание

    При добавлении нового элемента в корневой узел проекта файл создается в той же папке, что и файл проекта. Это можно проверить, открыв папку в Windows Обозреватель.

  5. Добавьте в файл элементы Project и ItemGroup :

    <Project ToolsVersion="4.0" 
             xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <ItemGroup>    
      </ItemGroup>
    </Project>
    
  6. Если вы хотите исключить папки из веб-пакета, добавьте элемент ExcludeFromPackageFolders в элемент ItemGroup :

    1. В атрибуте Include укажите разделенный точкой с запятой список папок, которые нужно исключить.

    2. В элементе метаданных FromTarget укажите понятное значение, указывающее, почему папки исключаются, например имя файла WPP.targets .

      <ExcludeFromPackageFolders Include="Internal">
        <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
      </ExcludeFromPackageFolders>
      
  7. Если вы хотите исключить файлы из веб-пакета, добавьте элемент ExcludeFromPackageFiles в элемент ItemGroup :

    1. В атрибуте Include укажите разделенный точкой с запятой список файлов, которые нужно исключить.

    2. В элементе метаданных FromTarget укажите понятное значение, указывающее, почему файлы исключаются, например имя файла WPP.targets .

      <ExcludeFromPackageFiles Include="Scripts\jquery-1.4.4-vsdoc.js;Scripts\jquery-1.4.4.js;Scripts\jquery-ui.js;Scripts\jquery.unobtrusive-ajax.js;Scripts\jquery.validate-vsdoc.js;Scripts\jquery.validate.js;Scripts\jquery.validate.unobtrusive.js;Scripts\MicrosoftAjax.debug.js;Scripts\MicrosoftMvcValidation.debug.js">
        <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
      </ExcludeFromPackageFiles>
      
  8. Файл [имя проекта].wpp.targets теперь должен выглядеть следующим образом:

    <Project ToolsVersion="4.0" 
             xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <ItemGroup>   
        <ExcludeFromPackageFolders Include="Internal">
          <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
        </ExcludeFromPackageFolders>
        <ExcludeFromPackageFiles Include="Scripts\jquery-1.4.4-
    vsdoc.js;Scripts\jquery-1.4.4.js;Scripts\jquery-ui.js;Scripts\jquery.unobtrusive-ajax.js;Scripts\jquery.validate-vsdoc.js;Scripts\jquery.validate.js;Scripts\jquery.validate.unobtrusive.js;Scripts\MicrosoftAjax.debug.js;Scripts\MicrosoftMvcValidation.debug.js">
          <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
        </ExcludeFromPackageFiles>
      </ItemGroup>
    </Project>
    
  9. Сохраните и закройте файл [имя проекта].wpp.targets .

При следующей сборке и упаковке проекта веб-приложения WPP автоматически обнаружит файл WPP.targets . Все указанные файлы и папки не будут включены в веб-пакет.

Заключение

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

Дополнительные материалы

Дополнительные сведения об использовании пользовательских файлов проекта Microsoft Build Engine (MSBuild) для управления процессом развертывания см. в разделах Общие сведения о файле проекта и Общие сведения о процессе сборки. Дополнительные сведения о процессе упаковки и развертывания см. в разделах Создание и упаковка проектов веб-приложений, Настройка параметров развертывания веб-пакетов и Развертывание веб-пакетов.