Подтвердить что ты не робот

Публиковать пустые каталоги в веб-приложении в веб-проекте VS2010

Часто мне нужно опубликовать веб-проект, сохраняющий дерево каталогов, даже если каталоги пусты, например, каталоги для хранения загруженных файлов. Если я опубликую свое приложение с помощью команды публикации VS2010, пустые каталоги не будут созданы в удаленной файловой системе на веб-сервере.

Есть ли способ заставить VS создавать определенные папки, пусть и пустые, в целевом каталоге? спасибо!

4b9b3361

Ответ 1

Нет, это невозможно. Боюсь, у нас была такая же проблема. Вам нужно создать файл placeholder.txt в каждом пустом каталоге, если вы хотите, чтобы инструмент предварительной компиляции генерировал эти пустые папки. В противном случае вы можете создать приложение командной строки, которое создаст папки в ваших событиях создания сообщений (но только если вы используете проект веб-приложения, а не проект веб-сайта).

Надеюсь, что это поможет.

Ответ 2

Я знаю, что в этом вопросе упоминается Visual Studio 2010, но я здесь искал ту же проблему...

Я использую Visual Studio 2012 и нашел хороший/элегантный способ преодолеть эту неприятную ситуацию. Я думаю, что он также будет работать в VS 2010 и лучше, чем добавлять пустые файлы в пустые папки.

Когда вы создаете профиль публикации с помощью VS 2012, он будет генерировать файл MyPublishProfile.pubxml в папке Properties\PublishProfiles (My Project\PublishProfiles для VB). Это MSBuild файлы, и их можно отредактировать, чтобы настроить процесс публикации. В нашем случае мы можем ввести цель в процесс публикации, прежде чем публикация действительно произойдет следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <AfterAddIisSettingAndFileContentsToSourceManifest>CreateEmptyFolders
    </AfterAddIisSettingAndFileContentsToSourceManifest>
  </PropertyGroup>
  <Target Name="CreateEmptyFolders">
    <Message Text="Adding empty folder to hold Files" />
    <MakeDir Directories="$(_MSDeployDirPath_FullPath)\Files\MyEmptyFolder"/>
  </Target>
</Project>

Свойство AfterAddIisSettingAndFileContentsToSourceManifest содержит имена целевых объектов, которые будут вызываться после того, как будет подготовлено содержимое пакета развертывания. Это идеальное время для добавления дополнительных файлов или папок в пакет.


Код и текст, смешанные с:

Как выполнить PowerShell script только до развертывания веб-службы Опубликовать задачу в VS 2012?

Развертывание Web: настройка пакета развертывания

Ответ 3

Об этом сообщил Microsoft отчет об ошибке, и они сказали, что они не исправят это. http://connect.microsoft.com/VisualStudio/feedback/details/546356/publish-deploy-does-not-deploy-empty-folders

Слишком плохо. Потому что он работал в Visual Studio 2008.

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

Ответ 4

Это работало для меня:

Отредактируйте опубликованный pubxml файл, который генерирует visual studio, например Leniel Macaferi, и добавьте следующее: В Visual Studio уже создано свойство типа

<publishUrl>f:\publish_web</publishUrl>

в

<PropertyGroup>    

поэтому я использовал его так: Добавлено в раздел:

 <PipelineDependsOn>
      CustomBeforePublish;
      $(PipelineDependsOn);
    </PipelineDependsOn>  

И добавил:

<Target Name="CustomBeforePublish">
    <Message Text="CustomBeforePublish task:"/>
    <MakeDir Directories="$(publishUrl)\MyFolder\MyFolder2"/>
  </Target>

Ответ 5

Внутри пустой папки Добавить файл Default.aspx. Вы можете оставить его пустым. Затем он создаст папку в версии PreCompiled.