Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как можно исключить файлы и папки из пакета веб-развертывания при сборке и пакете проекта веб-приложения.
Этот раздел является частью серии учебников, основанных на требованиях к развертыванию предприятия вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения — решение Contact Manager— для представления веб-приложения с реалистичным уровнем сложности, включая приложение MVC 3 ASP.NET MVC 3, службу Windows Communication Foundation (WCF) и проект базы данных.
Метод развертывания в центре этих учебников основан на подходе к разделенному файлу проекта, описанному в разделе "Общие сведения о файле проекта", в котором процесс сборки управляется двумя файлами проекта — одним из них содержит инструкции по сборке, которые применяются к каждой целевой среде, а также один из них содержит параметры сборки и развертывания для конкретной среды. Во время сборки файл проекта для конкретной среды объединяется в файл проекта, не зависящем от среды, чтобы сформировать полный набор инструкций по сборке.
Обзор
При создании проекта веб-приложения в Visual Studio 2010 конвейер веб-публикации (WPP) позволяет расширить этот процесс сборки, упаковав скомпилированное веб-приложение в развертываемый веб-пакет. Затем вы можете использовать средство веб-развертывания служб IIS (веб-развертывание) для развертывания этого веб-пакета на удаленном веб-сервере IIS или импортировать веб-пакет вручную с помощью диспетчера IIS. Этот процесс упаковки описан в разделе "Создание и упаковка проектов веб-приложений".
Так как вы управляете тем, что включается в веб-пакет? Параметры проекта в Visual Studio с помощью базового файла проекта обеспечивают достаточный контроль для множества сценариев. Однако в некоторых случаях может потребоваться настроить содержимое веб-пакета в конкретных целевых средах. Например, может потребоваться включить папку для файлов журналов при развертывании приложения в тестовой среде, но исключить папку при развертывании приложения в промежуточной или рабочей среде. В этом разделе показано, как это сделать.
Что включается по умолчанию?
При настройке свойств проекта веб-приложения в Visual Studio на странице Пакет/Публикация можно указать элементы для развертывания, что нужно включить в пакет веб-развертывания. По умолчанию это значение имеет значение "Только файлы", необходимые для запуска этого приложения.
При выборе только файлов, необходимых для запуска этого приложения, WPP попытается определить, какие файлы следует добавить в веб-пакет. Сюда входит следующее:
- Все выходные данные сборки для проекта.
- Все файлы, помеченные действием сборки тип Content.
Замечание
Логика, определяющая, какие файлы следует включить в этот файл:
%PROGRAMFILES%\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets
Исключение определенных файлов и папок
В некоторых случаях требуется более точное управление развертыванием файлов и папок. Если вы знаете, какие файлы необходимо исключить заранее, и исключение применяется ко всем целевым средам, можно просто задать действие сборки каждого файла на None.
Исключение определенных файлов из развертывания
- В окне обозревателя решений щелкните правой кнопкой мыши файл и выберите пункт "Свойства".
- В окне "Свойства" в строке "Действие сборки " выберите "Нет".
Однако этот подход не всегда удобно. Например, вы можете изменить, какие файлы и папки включены в соответствии с вашей целевой средой, как из Visual Studio, так и вне её. Например, в примере решения Диспетчера контактов просмотрите содержимое проекта ContactManager.Mvc:
- Внутренняя папка содержит некоторые скрипты SQL, которые разработчик использует для создания, удаления и заполнения локальных баз данных для целей разработки. Ничего в этой папке не должно быть развернуто в промежуточной или рабочей среде.
- Папка "Скрипты" содержит несколько файлов JavaScript. Многие из этих файлов включены исключительно для поддержки отладки или предоставления IntelliSense в Visual Studio. Некоторые из этих файлов не следует развертывать в промежуточных или рабочих средах. Однако их можно развернуть в тестовой среде разработчика, чтобы упростить устранение неполадок.
Хотя вы можете манипулировать файлами проекта, чтобы исключить определенные файлы и папки, существует более простой способ. WPP включает механизм исключения файлов и папок путем создания списков элементов с именем ExcludeFromPackageFolders и ExcludeFromPackageFiles. Этот механизм можно расширить, добавив собственные элементы в эти списки. Для этого необходимо выполнить следующие высокоуровневые действия:
Создайте пользовательский файл проекта с именем [имя проекта].wpp.targets в той же папке, что и файл проекта.
Замечание
Файл .wpp.targets должен перейти в ту же папку, что и файл проекта веб-приложения( например , ContactManager.Mvc.csproj), а не в той же папке, что и все пользовательские файлы проекта, используемые для управления процессом сборки и развертывания.
В файле .wpp.targets добавьте элемент ItemGroup .
В элементе 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 в проект веб-приложения и как использовать этот файл для исключения определенных файлов и папок из веб-пакета при сборке проекта.
Исключение файлов и папок из пакета веб-развертывания
Откройте решение в Visual Studio 2010.
В окне обозревателя решений щелкните правой кнопкой мыши узел проекта веб-приложения (например, ContactManager.Mvc), наведите указатель на "Добавить" и выберите пункт "Создать элемент".
В диалоговом окне "Добавление нового элемента" выберите шаблон XML-файла .
В поле "Имя" введите [имя проекта].wpp.targets (например, ContactManager.Mvc.wpp.targets), а затем нажмите кнопку "Добавить".
Замечание
При добавлении нового элемента в корневой узел проекта файл создается в той же папке, что и файл проекта. Это можно проверить, открыв папку в проводнике Windows.
В файле добавьте элемент Project и элемент ItemGroup :
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> </ItemGroup> </Project>Если вы хотите исключить папки из веб-пакета, добавьте элемент ExcludeFromPackageFolders в элемент ItemGroup :
В атрибуте Include укажите список папок, которые вы хотите исключить, разделенных точкой с запятой.
В элементе метаданных FromTarget укажите понятное значение, чтобы указать, почему папки исключаются, например имя файла WPP.targets .
<ExcludeFromPackageFolders Include="Internal"> <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> </ExcludeFromPackageFolders>
Если вы хотите исключить файлы из веб-пакета, добавьте элемент ExcludeFromPackageFiles в элемент ItemGroup :
В атрибуте Include укажите список файлов, которые вы хотите исключить, разделив их точкой с запятой.
В элементе метаданных 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>
Теперь файл [имя проекта].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>Сохраните и закройте файл [имя проекта].wpp.targets .
При следующей сборке и упаковке проекта веб-приложения WPP автоматически обнаружит файл WPp.targets . Все указанные файлы и папки не будут включены в веб-пакет.
Conclusion
В этом разделе описано, как исключить определенные файлы и папки при создании веб-пакета, создав пользовательский файл WPP.targets в той же папке, что и файл проекта веб-приложения.
Дальнейшее чтение
Дополнительные сведения об использовании пользовательских файлов проекта Microsoft Build Engine (MSBuild) для управления процессом развертывания см. в разделе "Общие сведения о файле проекта " и "Общие сведения о процессе сборки". Дополнительные сведения о процессе упаковки и развертывания см. в статье "Создание и упаковка проектов веб-приложений", настройка параметров для развертывания веб-пакетов и развертывание веб-пакетов.