2015-12-18 12 views
10

Ho notato che quando pubblico il nuovo progetto ASP.NET, mette tutti i file non di codice nella cartella radice nei pacchetti. Per esempio. Questi file finiscono lì:Come escludere i file dalla pubblicazione in ASP.NET Core?

  • profili di pubblicazione
  • gulpfile.js

Non v'è alcuna reale necessità di includere quelli nella cartella pubblicata. Nelle soluzioni precedenti era altrettanto semplice modificare le proprietà dei file per escluderli. Ora le proprietà fanno qualcosa di completamente diverso e aprono una finestra di dialogo abbastanza inutile in cui puoi solo vedere il percorso del file. Forse è possibile fare un altro modo? Idealmente l'IDE dovrebbe essere abbastanza intelligente da non pubblicare questi file comuni, ma per alcuni personalizzati dovrebbe essere un modo per escluderli.

Naturalmente non è un problema così grave che alcuni file aggiuntivi vengano pubblicati, ma è logico escluderli.

P.S. Il possibile duplicato proposto non è lo stesso, poiché riguarda solo la vecchia struttura di progetto/soluzione, mentre ASP.NET Core ne ha introdotto uno nuovo in cui l'altra soluzione non è applicabile.

+0

Eventuali duplicati di [escludere file dal sito web di pubblicare in Visual Studio] (http://stackoverflow.com/questions/650875/exclude-files-from-web-site-publish-in-visual-studio) – Richard

+1

Questo non è esattamente un duplicato, la struttura di ASP.I file NET 5 sono diversi e potrebbero essere altri modi appropriati di farlo, specialmente se si tiene conto della build (lo fa quando si esegue il packaging su nuget, per quanto ho capito). Il duplicato suggerito è per altri tipi di progetti/soluzioni. –

+0

In effetti non lo è. MVC5 e ASP.NET5 e molto diversi: versioning davvero scortese da MS. – Richard

risposta

10

Per impostazione predefinita, tutti i file di codice in una directory contenente un project.json sono inclusi nel progetto. Puoi controllarlo con le sezioni di inclusione/esclusione di project.json.

Le sezioni più comuni che vedrete per l'inclusione ed esclusione dei file sono:

{ 
    "compile": "*.cs", 
    "exclude": [ 
    "node_modules", 
    "bower_components" 
    ], 
    "publishExclude": [ 
    "**.xproj", 
    "**.user", 
    "**.vspscc" 
    ] 
} 
  • La sezione di compilazione specifica che solo i file con estensione cs verrà compilato.
  • La sezione di esclusione esclude tutti i file nelle node_modules e nelle directory bower_components. Anche se le sezioni hanno estensioni .cs.
  • La sezione publishExclude consente di escludere file dall'output di pubblicazione del progetto. In questo esempio, tutti i file .xproj, .user, e .vspscc dall'output del comando di pubblicazione.

From here

+0

Come si esclude una cartella? solo scrivere il nome della cartella in "publishExclude" sembra non funzionare. –

+2

Sembra che questo sia cambiato un po 'negli ultimi bit di RC2. publishExclude non è più un'opzione https://github.com/aspnet/Announcements/issues/175#include-structure –

+1

nella versione RTM è possibile utilizzare publishOptions> excludeFiles – JGeerWM

0

Supponendo che si sta utilizzando VS profili di pubblicazione:

È possibile modificare direttamente il file .pubxml (è solo XML) per aggiungere elementi:

<ExcludeFoldersFromDeployment> 
    images;document 
</ExcludeFoldersFromDeployment> 
<ExcludeFilesFromDeployment> 
    mystyle.css 
</ExcludeFilesFromDeployment> 

dove ogni elemento comprende un punto e virgola elenco separato di nomi di cartelle o file (rispettivamente). Sono supportati i caratteri jolly.

+0

Non funziona abbastanza con il nuovo ASP.NET 5, l'ho fatto: gulpfile.js , ma il file è stato ancora copiato. –

+0

@IlyaChernomordik: Ho pubblicato un problema su github a proposito di = https://github.com/aspnet/vsweb-publish/issues/73 –

0

ho scoperto che il commento di @Shane Neuville sopra sono esatte. La struttura del file project.json è cambiata e ora, invece di usare "publishExclude", dovremmo usare "exclude" ... Ecco un link a document explaining the change in aggiunta a ciò che la mia sezione del file project.json ora assomiglia a:

{ 
    "publishOptions": { 
     "include": [ 
      "wwwroot", 
      "**/*.cshtml", 
      "appsettings.json", 
      "appsettings.*.json", 
      "web.config" 
     ], 
     "exclude": [ 
      "**/node_modules" 
     ] 
    } 
} 
Problemi correlati