Ho risposto a una domanda simile ma diversa in Come includere file aggiuntivi utilizzando i pacchetti di distribuzione web VS2010? .
Nel tuo scenario in cui stai utilizzando l'evento post build, ti consiglio di eliminare l'evento post build e implementare le tue azioni utilizzando i tuoi obiettivi MSBuild invece dell'evento post build. Di seguito troverai il testo dell'altra risposta.
Da: come si includono file aggiuntivi utilizzando i pacchetti di distribuzione web VS2010?
Ottima domanda. Ho appena pubblicato un post sul blog molto dettagliato su questo argomento Web Deployment Tool (MSDeploy): Build Package che include file extra o esclude file specifici .
Ecco la sinossi. Dopo aver incluso i file, mostro come escludere anche i file.
Compresi file extra
Includere file extra nel pacchetto è un po 'più difficile ma comunque non è un problema se sei a tuo agio con MSBuild, e se non lo sei allora leggi questo. Per fare questo dobbiamo agganciarci alla parte del processo che raccoglie i file per il packaging. L'obiettivo che dobbiamo estendere si chiama CopyAllFilesToSingleFolder. Questa destinazione ha una proprietà di dipendenza, PipelinePreDeployCopyAllFilesToOneFolderDependsOn, che possiamo attingere e iniettare la nostra destinazione. Quindi creeremo un target denominato CustomCollectFiles e lo inseriremo nel processo. Otteniamo ciò con quanto segue (ricorda dopo l'istruzione import).
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
Questo aggiungerà il nostro obiettivo al processo, ora dobbiamo definire l'obiettivo stesso. Supponiamo che tu abbia una cartella denominata File extra che si trova 1 livello sopra il tuo progetto web. Vuoi includere tutti quei file. Ecco l'obiettivo CustomCollectFiles e dopo ne discuteremo.
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\Extra Files\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>Extra Files\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
Qui quello che ho fatto è stato creare l'elemento _CustomFiles e nell'attributo Include gli ho detto di raccogliere tutti i file in quella cartella e qualsiasi cartella sottostante. Quindi utilizzo questo elemento per popolare l'elemento FilesForPackagingFromProject. Questo è l'elemento che MSDeploy utilizza effettivamente per aggiungere file aggiuntivi. Si noti inoltre che ho dichiarato il valore DestinationRelativePath dei metadati. Questo determinerà il percorso relativo che verrà inserito nel pacchetto. Ho usato l'istruzione Extra Files% (RecursiveDir)% (Filename)% (Extension) qui. Ciò che sta dicendo è posizionarlo nella stessa posizione relativa nel pacchetto in cui si trova nella cartella File extra.
Esclusi i file
Se apri il file di progetto di un'applicazione web creata con VS 2010 verso la parte inferiore di esso troverai una linea con.
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
BTW è possibile aprire il file di progetto all'interno di VS. Fare clic con il pulsante destro del mouse sul progetto, selezionare Scarica progetto. Quindi fare clic con il pulsante destro del mouse sul progetto scaricato e selezionare Modifica progetto.
Questa dichiarazione includerà tutti gli obiettivi e le attività di cui abbiamo bisogno. La maggior parte delle nostre personalizzazioni dovrebbero essere successive a tale importazione, se non sei sicuro di metterle se dopo! Quindi, se hai file da escludere, c'è un nome di elemento, ExcludeFromPackageFiles, che può essere utilizzato per farlo. Ad esempio, supponiamo che tu abbia un file denominato Sample.Debug.js incluso nella tua applicazione web ma desideri che quel file venga escluso dai pacchetti creati. Puoi inserire lo snippet di seguito dopo quella dichiarazione di importazione.
<ItemGroup>
<ExcludeFromPackageFiles Include="Sample.Debug.xml">
<FromTarget>Project</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
Dichiarando di popolare questo elemento i file verranno automaticamente esclusi. Notare l'utilizzo dei metadati FromTarget qui. Non ne parlerò qui, ma dovresti sapere di specificarlo sempre.