Опубликовать пустые каталоги в веб-приложение в веб-проекте VS2010
-
27-09-2019 - |
Вопрос
Зачастую мне нужно публиковать веб-проект, сохраняющий дерево каталогов, даже если каталоги могут быть пустыми, например, каталоги для хранения загруженных файлов. Если я опубликую свое приложение, используя команду 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. Вы можете оставить его пустым, затем создаст папку в предложенной версии.