Veröffentlichen Sie leere Verzeichnisse in einer Webanwendung im VS2010 -Webprojekt
-
27-09-2019 - |
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!
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:
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.