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

StackOverflow https://stackoverflow.com/questions/4257660

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

Я знаю, что этот вопрос упоминает 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 только перед веб-развертыванием, опубликовать задачу в VS 2012?

Веб-развертывание: Настройка пакета развертывания

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

Очень жаль. Потому что он работал в Visual Studio 2008.

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

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

Отредактируйте свой файл Public 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>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top