Site icon Ryadel

ASP.NET Core Publish - Eliminare le cartelle relative alle lingue non utilizzate

How to fix the "No executable found matching command dotnet-ef" error in Visual Studio with .NET Core

In questo post affronteremo un problema che riguarda la maggior parte dei progetti ASP.NET Core durante la fase di pubblicazione.

Come molti sviluppatori già sanno, quando andiamo a pubblicare una applicazione ASP.NET Core (tramite prompt dei comandi , utilizzando il comando dotnet public, o tramite Visual Studio), il framework genera una serie di assembly satellite per il supporto alla localizzazione, raggruppandoli in una serie di cartelle relative alle varie lingue disponibili.

In conseguenza di questo automatismo, al termine del processo di pubblicazione ci si ritrova spesso con il seguente risultato:ASP.NET Core Publish - Eliminare le cartelle relative alle lingue non utilizzate

Sebbene queste cartelle siano completamente innocue, se non supportiamo queste lingue potremmo ragionevolmente voler impedire che vengano generate.

Per fare ciò, è sufficiente aprire il file di progetto (quello che termina con il prefisso .csproj) e aggiungere l'elemento <SatelliteResourceLanguages> al primo PropertyGroup (quello contenente l'elemento TargetFramework) nel seguente modo:

L'elemento <SatelliteResourceLanguages> consente di indicare le lingue che esplicitamente supportate dalla nostra applicazione: nello scenario sopra, ad esempio, siccome intendiamo supportare solo le lingue inglese (en) e italiano (it), abbiamo aggiunto soltanto queste due.

Per maggiori informazioni sull'elemento SatelliteResourceLanguages, consulta la guida ufficiale.

Se questa impostazione non è sufficiente per risolvere il problema, potrebbe essere necessario apportare un'altra modifica al medesimo file di progetto.

Nello specifico, dobbiamo individuare il seguente elemento:

E aggiungere l'attributo ExcludeAssets="All" nel seguente modo:

Questa impostazione, unitamente alla precedente, dovrebbe impedire la generazione di quelle cartelle una volta per tutte.

IMPORTANTE: gli esempi di cui sopra sono presi da una app che utilizza .NET 8 (v8.0.0): se la app che vogliamo "fixare" utilizza una versione diversa del framework, gli elementi menzionati avranno riferimenti diversi.

Conclusioni

Questo è tutto, almeno per il momento: ci auguriamo che questa piccola guida possa aiutare altri sviluppatori ASP.NET Core a sbarazzarsi di quelle inutili cartelle di localizzazione durante la pubblicazione delle loro app sul Web.

Exit mobile version