Могу ли я исключить папку или файлы при публикации веб-сайта в Visual Studio 2005? У меня есть различные ресурсы, которые я хочу держать под рукой в обозревателе решений, например альтернативные файлы конфигурации для различных сред, но я действительно не хочу публиковать их на сервере. Есть ли способ их исключить? При использовании других типов проектов, таких как сборка .dll, я могу установить для свойства Build Action файла значение «None», а для его свойства Copy to Output Directory - значение «Do not copy». Я не могу найти подобных настроек для файлов на веб-сайте.
Если IDE не предлагает эту функцию, есть ли у кого-нибудь хороший способ работы с такими файлами?
visual-studio
visual-studio-2005
web-publishing
Джим Снайдер
источник
источник
Ответы:
Если вы можете идентифицировать файлы по расширению, вы можете настроить это с помощью тега buildproviders в файле web.config . Добавьте расширение и сопоставьте его с ForceCopyBuildProvider. Например, чтобы настроить файлы .xml для копирования с действием публикации, вы должны сделать следующее:
Чтобы предотвратить копирование данного файла, вы должны сделать то же самое, но использовать System.Web.Compilation.IgnoreFileBuildProvider в качестве типа.
источник
Исключение файлов и папок путем добавления
ExcludeFilesFromDeployment
иExcludeFoldersFromDeployment
элементы в файл проекта (.csproj, .vbproj и т.д.). Вам нужно будет отредактировать файл в текстовом редакторе или в Visual Studio, выгрузив проект и отредактировав его.Добавьте теги в любом месте подходящего
PropertyGroup
(Отладка, Выпуск и т. Д.), Как показано ниже:Подстановочные знаки поддерживаются.
Чтобы объяснить приведенный выше пример:
ExcludeFilesFromDeployment
исключаетFile1.aspx
(в корне проекта) иFolder2\File2.aspx
(Folder2
находится в корне проекта)ExcludeFilesFromDeployment
исключает все файлы в любой названной папке.svn
и любой из ее подпапок.ExcludeFoldersFromDeployment
исключает папки с именамиFolder1
(в корне проекта) иFolder2\Folder2a
(Folder2
в корне проекта)Для получения дополнительной информации см. Сообщение в блоге MSDN. Веб-развертывание: исключение файлов и папок через файл проекта веб-приложения.
источник
Удивительно, но ответа для Visual Studio 2012 здесь нет:
Ответ с зеленой галочкой не является ответом.
Самый высокий «повышенный» ответ ссылается на статью 2010 года, в которой говорится, что вам нужно отредактировать файл проекта csproj, который теперь неверен. Я добавил XML-элемент ExcludeFoldersFromDeployment в свой файл csproj Visual Studio 2012, и он ничего не сделал, элемент считался недопустимым, потому что ExcludeFoldersFromDeployment был перемещен в файл .pubxml, как он выглядит.
Для веб-приложений и веб-сайтов вы редактируете файл .pubxml!
Вы можете следовать моему ответу или попробовать это руководство, которое я нашел позже: http://www.leniel.net/2014/05/using-msdeploy-publish-profile-pubxml-to-create-an-empty-folder-structure- on-iis-and-skip-deleting-it-with-msdeployskiprules.html # sthash.MSsQD8U1.dpbs
Да, вы можете сделать это не только для веб-проектов, но и для веб-сайтов. Я провел много времени в Интернете в поисках этой неуловимой возможности исключения с помощью веб-сайта Visual Studio (НЕ проекта веб-сайта) и ранее пришел к выводу, что это невозможно, но похоже, что это так:
В файле [mypublishwebsitename] .pubxml, который находится в ~ / Properties / PublishProfiles для проектов веб-приложений и ~ / App_Data / PublishProfiles для веб-сайтов, просто добавьте:
как дети к главному
<PropertyGroup>
элементу в вашем .pubxml файле. Нет необходимости добавлять новый элемент, если только вы не используете определенный тип сборки, например выпуск или отладку.НО ЖДАТЬ!!!
Если вы удаляете файлы с целевого / целевого сервера со следующими настройками в конфигурации публикации:
Затем процесс веб-публикации удалит на вашем исходном / целевом сервере все исключенное, например, элемент, который вы обозначили в своих
<ExcludeFoldersFromDeployment>
и<ExcludeFilesFromDeployment>
!Правила пропуска MsDeploy спешат на помощь:
Во-первых, Web Publish для публикации использует что-то другое, кроме MSBuild (так называемый Task IO или что-то в этом роде), но в нем есть ошибка и он не распознает правила пропуска, поэтому вы должны добавить в свой .pubxml:
Я бы оставил
<WebPublishMethod>
свой собственный<PropertyGroup>
, вы могли бы подумать, что у вас может быть только один<PropertyGroup>
элемент в вашем .pubxml, но мои правила пропуска не вызывались, пока я не перешел<WebPublishMethod>
к его собственному<PropertyGroup>
элементу. Да, безумие, но тот факт, что вам нужно сделать все это для Web Publish, чтобы исключить, а также не удалить папку / файл на вашем сервере, безумие.Теперь мои фактические объявления SkipRules, ExcludeFolders и ExcludeFiles в моем .pubxml:
А теперь правила пропуска (
<Target>
являются дочерними для<Project>
вашего .pubxml): ( Вы можете оставить<SkipAction>
пустым, чтобы пропустить все действия, но я не проверял это и не уверен.И, пожалуйста, не забудьте экранировать
.
правило пропуска в filePath с помощью обратной косой черты.источник
Я боролся с той же проблемой и, наконец, нажал на спусковой крючок по преобразованию веб-сайта в веб-приложение. Как только я это сделал, я получил все преимущества IDE, такие как действие сборки, и он скомпилировался быстрее для загрузки (больше не нужно проверять веб-сайт ...).
Шаг 1. Преобразуйте свой «веб-сайт» в «веб-приложение». Чтобы преобразовать его, я просто создал новое «веб-приложение», удалил все файлы, которые оно создавало автоматически, и скопировал и вставил в него свой веб-сайт. Это сработало. Обратите внимание, что для файлов отчетов необходимо, чтобы действие сборки было установлено на «Содержимое» вместо «Нет».
Шаг 2: Теперь вы можете установить для любых файлов свойство «Build Action».
Надеюсь это поможет.
источник
В Visual Studio 2013 я обнаружил, что ответ Кита, добавив
ExcludeFoldersFromDeployment
элемент в файл проекта, не сработал (я не читал ответ Брайана Огдена, в котором говорится об этом). Однако я обнаружил, что могу исключить текстовый файл при публикации в Visual Studio 2013, просто установив следующие свойства в самом текстовом файле:1) Действие сборки: нет
2) Копировать в выходной каталог: не копировать
Первоначально я пытался установить свойство Копировать в выходной каталог отдельно, но это не сработало, когда для действия сборки было задано значение по умолчанию, Content. Когда я затем установил для действия сборки значение Нет, текстовый файл больше не копировался в папку назначения при публикации.
Чтобы просмотреть эти свойства в графическом интерфейсе Visual Studio, в обозревателе решений щелкните правой кнопкой мыши файл, который нужно исключить, и выберите «Свойства» в контекстном меню.
источник
Я думаю, у вас есть только два варианта:
Я проходил через это раньше и не мог придумать ничего действительно элегантного.
источник
Для Visual Studio 2017 : публикация WebApp , сначала создайте профиль публикации стандартной файловой системы. Перейдите в папку App_Data \ PublishProfiles \ и отредактируйте файл [имя профиля] .pubxml.
Добавить
под тегом.
<PropertyGroup>
Этот тег можно указать только один раз, иначе он будет принимать только последние значения.Пример:
Убедитесь, что для тега DeleteExistingFiles установлено значение False.
источник
Функция, которую вы ищете, существует, если ваш проект создан как «Веб-приложение». «Проекты» веб- сайта - это просто набор файлов, которые рассматриваются как 1: 1 с тем, что развертывается на веб-сервере.
С точки зрения функциональности оба они одинаковы, однако веб-приложение компилирует весь исходный код в DLL, а не файлы исходного кода, которые копируются на веб-сервер и компилируются по мере необходимости.
источник
Это просто дополнение к другим полезным ответам здесь и кое-что, что я нашел полезным ...
Использование wpp.targets для исключенных файлов и папок
Когда у вас есть несколько развертываний для разных сред, полезно иметь только один общий файл, в котором вы можете установить все исключенные файлы и папки. Вы можете сделать это, создав
*.wpp.targets
файл в корне проекта, как в примере ниже.Для получения дополнительной информации см. Это руководство Microsoft:
Как: изменить параметры развертывания в файлах профиля публикации (.pubxml) и файле .wpp.targets в веб-проектах Visual Studio
источник
В Visual Studio 2017 (в моем случае 15.9.3) манипуляции с файлом .csproj действительно работают отлично! Нет необходимости изменять pubxml.
Затем вы можете создать довольно приятные настройки в .csproj-файле, используя условие PropertyGroup, например:
исключает папку «Samples» из всех развертываний с конфигурациями, начинающимися с «Pub _» ...
источник
В качестве современного ответа в Visual Studio 2017 с основным сайтом .net:
Вы можете исключить из публикации, например, в csproj, где CopyToPublishDirectory - никогда.
Более подробно это обсуждается здесь: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-2.2
Предыдущие предложения не сработали для меня, я предполагаю, потому что Visual Studio теперь использует другой механизм публикации внизу, я полагаю, с помощью инструмента cli «dotnet publish» или его эквивалента внизу.
источник