Frage

Oft muss ich ein Webprojekt veröffentlichen, in dem ein Verzeichnisbaum aufbewahrt wird, auch wenn die Verzeichnisse leer sind, z. B. Verzeichnisse für hochgeladene Dateien. Wenn ich meine App mit dem Befehl VS2010 Publish veröffentliche, werden die leeren Verzeichnisse nicht auf dem Remote -Dateisystem auf dem Webserver erstellt.

Gibt es eine Möglichkeit, VS zu zwingen, bestimmte Ordner, wenn auch leer, im Zielverzeichnis zu erstellen? Danke!

War es hilfreich?

Lösung

Nein, das ist nicht möglich. Ich fürchte, wir hatten das gleiche Problem. Sie müssen in jedem leeren Verzeichnis eine Placeholder.txt -Datei erstellen, wenn Sie möchten, dass das Vorkompilierungstool diese leeren Ordner generiert. Wenn Sie nicht eine Befehlszeilen -App erstellen können, die die Ordner in Ihren Post -Build -Ereignissen erstellt (jedoch nur, wenn Sie das Webantragsprojekt verwenden, nicht auf Website -Projekten).

Hoffe das hilft.

Andere Tipps

Ich weiß, dass diese Frage erwähnt wird Visual Studio 2010 Aber ich bin hier auf der Suche nach dem gleichen Problem ...

Ich benutze Visual Studio 2012 und fand eine schöne/elegante Möglichkeit, diese nervige Situation zu überwinden. Ich denke, es wird auch in funktionieren VS 2010 und ist besser als das Hinzufügen leerer Dummy -Dateien in den leeren Ordnern.

Wenn Sie ein Veröffentlichungsprofil mit erstellen VS 2012 es wird a erzeugen MyPublishProfile.pubxml Datei in der Properties\PublishProfiles Mappe (My Project\PublishProfiles für VB). Diese sind MSBuild Dateien und man können sie bearbeiten, um den Veröffentlichungsprozess anzupassen. In unserem Fall können wir ein Ziel in den Veröffentlichungsprozess injizieren, bevor die Veröffentlichung tatsächlich wie folgt auftritt:

<?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>

Die Eigenschaft AfterAddIisSettingAndFileContentsToSourceManifest Hält die Namen der Ziele, die nach dem Inhalt für das Bereitstellungspaket erstellt werden. Dies ist der perfekte Zeitpunkt, um dem Paket zusätzliche Dateien oder Ordner hinzuzufügen.


Code und Text gemischt aus:

Wie führe ich ein PowerShell -Skript nur vor einer Web -Bereitstellung aus, die in VS 2012 veröffentlichen?

Web -Bereitstellung: Anpassen eines Bereitstellungspakets

Microsoft gab einen Fehlerbericht darüber und sie sagten, dass sie ihn nicht beheben würden.http://connect.microsoft.com/visualstudio/feedback/details/546356/publish-deploy-does-notdeploy-empy-prolders

Schade. Weil es früher in Visual Studio 2008 funktioniert hat.

Beachten Sie, dass es nicht erforderlich ist, die Dummy -Datei tatsächlich bereitzustellen. Es muss nur als Teil des Projekts in der Build -Umgebung existieren.

Dieser hat für mich funktioniert:

Bearbeiten Sie Ihre Publish PUBXML -Datei, die Visual Studio generiert, wie Leniel Macaferi erwähnt, und fügen Sie dies hinzu: Visual Studio generierte bereits eine Eigenschaft wie

<publishUrl>f:\publish_web</publishUrl>

in dem

<PropertyGroup>    

Abschnitt, also habe ich es so verwendet: Hinzufügen zum Abschnitt:

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

Und fügte auch hinzu:

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

In dem leeren Ordner fügen Sie eine Standarddatei für Standard.aspx hinzu. Sie können es leer lassen, er erstellt den Ordner in der vorkompilierten Version.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top