6

Quando si pubblica un'applicazione Web ASP.NET in Visual Studio 2012/2013/2015, Visual Studio pubblicherà anche i pacchetti packages.config (da NuGet) e qualsiasi file * .edmx.diagram (da Entity Framework) , per impostazione predefinita.Posso impedire a Visual Studio 2012+ di pubblicare sempre file packages.config e EF diagram?

So che posso andare nel progetto e individualmente cambiare le proprietà di questi file da Operazione di generazione contenuti a Corporatura Azione Nessuno, però, devo fare questo per ogni progetto che uso Entity Framework, o qualsiasi altro pacchetto fornito da NuGet.

posso configure the publishing process per escludere i file su una base di progetto per progetto, ma è possibile indicare a Visual Studio 2012/2013/2015 globalmente per escludere questi file, in tutti i progetti?

+0

Possibile duplicato di [Escludi file da pubblicazione sito Web in Visual Studio] (http://stackoverflow.com/questions/650875/exclude-files-from-web-site-publish-in-visual-studio) – dthrasher

+0

Grazie per il nudge. Chiarito che sto cercando qualcosa di globale, dal momento che farlo su base progetto per progetto è un lavoro ingrato, soprattutto perché EF è una inclusione piuttosto standard. –

risposta

4

È possibile escludere file per estensione o nome file modificando le proprietà nel file web.config. Guarda la documentazione per il buildproviders element in web.config. È possibile aggiungere l'estensione e la mappa al System.Web.Compilation.ForceCopyBuildProvider, o aggiungere il nome del file e utilizzare lo System.Web.Compilation.IgnoreFileBuildProvider

La sezione buildproviders ha la seguente struttura:

<buildProviders> 
    <add /> 
    <clear/> 
    <remove /> 
</buildProviders> 

È inoltre possibile escludere file o cartelle modificando il file di progetto. All'interno di un elemento PropertyGroup, è possibile aggiungere elementi ExcludeFilesFromDeployment ed ExcludeFoldersFromDeployment per escludere gli elementi desiderati.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <ExcludeFilesFromDeployment>File1.aspx;File2.aspx</ExcludeFilesFromDeployment> 
    <ExcludeFoldersFromDeployment>Folder1;Folder2</ExcludeFoldersFromDeployment> 
</PropertyGroup> 

Vedi le risposte a questa domanda per maggiori dettagli: Exclude files from web site publish in Visual Studio

UPDATE: In risposta al requisito rivisto che tu sia in grado di farlo a livello globale, in tutti i progetti e le soluzioni, mi piacerebbe suggerire di creare un file build target che è possibile importare nei file di progetto. All'interno del file di destinazione, è possibile identificare le esclusioni di file e cartelle che si desidera creare.

Per semplificare la consegna di questo obiettivo di compilazione a tutte le soluzioni, è possibile creare un pacchetto NuGet contenente il file di destinazione e modificare di conseguenza i file .csproj.

Questo è essenzialmente l'approccio utilizzato da SlowCheetah per estendere il processo di trasformazione web.config ad altri file .config; il pacchetto NuGet fornisce un file .targets personalizzato che estende il processo di costruzione.

L'installazione iniziale è uno sforzo, ma se stai supportando molte soluzioni o team, potrebbe essere l'approccio migliore.

Problemi correlati