Question

Souvent, je dois publier un projet web en conservant une arborescence de répertoires même si les répertoires sont vides, par exemple, des répertoires pour les fichiers téléchargés. Si je publie mon application en utilisant la commande publier VS2010, les répertoires vides ne sont pas créés sur le système de fichiers distant, sur le serveur Web.

Y at-il un moyen de forcer VS pour créer certains dossiers, quoique vide, sur le répertoire cible? merci!

Était-ce utile?

La solution

Non, ce n'est pas possible, je crains que nous avons eu le même problème. Vous devez créer un fichier placeholder.txt dans chaque répertoire vide si vous voulez que l'outil de précompilation pour générer ces dossiers vides. A défaut, vous pouvez créer une application de ligne de commande qui permettra de créer des dossiers dans vos événements post-construction (mais seulement si vous utilisez projet d'application web non du projet de site Web).

Hope this helps.

Autres conseils

Je sais que cette question mentionne Visual Studio 2010 mais je m'y suis ici pour trouver le même problème ...

J'utilise Visual Studio 2012 et a trouvé un moyen agréable / élégant pour surmonter cette situation ennuyeux. Je pense que ce travail aussi dans VS 2010 et est mieux que d'ajouter factices fichiers vides à l'intérieur des dossiers vides.

Lorsque vous créez un profil de publication avec VS 2012 il va générer un fichier MyPublishProfile.pubxml dans le dossier Properties\PublishProfiles (de My Project\PublishProfiles pour VB). Ce sont des fichiers MSBuild et on peut les modifier pour personnaliser le processus publier. Dans notre cas, nous pouvons injecter une cible dans le processus de publication, avant Publish se produit en fait comme ceci:

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

Le AfterAddIisSettingAndFileContentsToSourceManifest de propriété contient les noms des cibles qui seront invoquées après le contenu du package de déploiement a été préparé. Ceci est le moment idéal pour ajouter des fichiers ou des dossiers supplémentaires à l'ensemble.


Code et texte mixte de:

Comment exécuter un script PowerShell seulement avant un déploiement Web Publish tâche VS 2012?

Web Déploiement: Personnalisation d'un package de déploiement

Il y avait un rapport de bogue à Microsoft à ce sujet et ils ont dit qu'ils ne le réparer. http://connect.microsoft .com / VisualStudio / feedback / détails / 546356 / publication-deploy-ne-pas-deploy-vide-dossiers

Dommage. Parce qu'il travaillait dans Visual Studio 2008.

Notez qu'il est pas nécessaire de déployer réellement le fichier factice. Il n'a besoin que d'exister dans le cadre du projet dans l'environnement de construction.

Celui-ci a fonctionné pour moi:

Modifier votre fichier publier pubxml que Visual Studio génère, comme Leniel Macaferi mentionné, puis ajouter ceci: Visual Studio déjà généré une propriété comme

<publishUrl>f:\publish_web</publishUrl>

dans le

<PropertyGroup>    

section, je l'ai donc utilisé comme ceci: Ajouté à la section:

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

Et aussi ajouté:

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

Dans le dossier vide Ajouter un fichier Default.aspx. Vous pouvez le laisser vide, il crée ensuite le dossier dans la version pré-compilée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top