Domanda

Spesso devo pubblicare un progetto Web che preserva un albero di directory anche se le directory sono vuote, ad esempio, le directory per contenere file caricati. Se pubblico la mia app utilizzando il comando Publish VS2010, le directory vuote non vengono create sul filesystem remoto, sul server Web.

C'è un modo per forzare vs a creare determinate cartelle, sebbene vuote, nella directory target? Grazie!

È stato utile?

Soluzione

No, non è possibile, temo che abbiamo avuto lo stesso problema. È necessario creare un file segnapunti.txt in ogni directory vuota se si desidera che lo strumento di precompilazione generi queste cartelle vuote. Non riuscire a creare un'app di riga di comando che creerà le cartelle nei tuoi eventi di build post (ma solo se si utilizza il progetto dell'applicazione Web non il progetto del sito Web).

Spero che sia di aiuto.

Altri suggerimenti

So che questa domanda menziona Visual Studio 2010 Ma sono arrivato qui cercando lo stesso problema ...

sto usando Visual Studio 2012 e ho trovato un modo piacevole/elegante per superare questa fastidiosa situazione. Penso che funzionerà anche VS 2010 ed è meglio che aggiungere file vuoti fittizi all'interno delle cartelle vuote.

Quando crei un profilo di pubblicazione con VS 2012 genererà un MyPublishProfile.pubxml file in Properties\PublishProfiles cartella (My Project\PublishProfiles per VB). Questi sono MSBuild file e uno può modificarli per personalizzare il processo di pubblicazione. Nel nostro caso possiamo iniettare un obiettivo nel processo di pubblicazione, prima che la pubblicazione si verifichi effettivamente:

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

La proprietà AfterAddIisSettingAndFileContentsToSourceManifest Contiene i nomi degli obiettivi che verranno invocati dopo che i contenuti per il pacchetto di distribuzione sono stati preparati. Questo è il momento perfetto per aggiungere ulteriori file o cartelle al pacchetto.


Codice e testo miscelati da:

Come eseguire uno script PowerShell solo prima di un'attività di pubblicazione di distribuzione Web in VS 2012?

Distribuzione Web: personalizzazione di un pacchetto di distribuzione

C'era un rapporto di bug su Microsoft su questo e hanno detto che non lo avrebbero risolto.http://connect.microsoft.com/visualstudio/feedback/details/546356/publish-deploy-does-not-deploy-empty-flors

Peccato. Perché funzionava in Visual Studio 2008.

Si noti che non è necessario distribuire effettivamente il file fittizio. Deve solo esistere come parte del progetto nell'ambiente di costruzione.

Questo ha funzionato per me:

Modifica il tuo file pubxml pubblica che genera Visual Studio, come menzionato Leniel Macaferi, quindi aggiungi questo: Visual Studio ha già generato una proprietà come

<publishUrl>f:\publish_web</publishUrl>

nel

<PropertyGroup>    

sezione, quindi l'ho usato in questo modo: aggiunto alla sezione:

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

E anche aggiunto:

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

All'interno della cartella vuota Aggiungi un file predefinito.aspx. Puoi lasciarlo vuoto, quindi creerà la cartella nella versione precompilata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top