Come utilizzare le risorse globali compilate in ASP.NET MVC
-
13-09-2019 - |
Domanda
Voglio compilare App_GlobalResources / Strings.resx nel mio assemblaggio (ed eventualmente utilizzare assembly satellite per Strings.es.resx, Strings.fr.resx , etc. ), ma il seguente errore si verifica una volta che l'applicazione è pubblicato:
"Impossibile caricare il file o l'assembly 'App_GlobalResources' o una delle sue dipendenze. Il sistema non trova il file specificato."
Procedura per riprodurre:
- Creare un nuovo progetto ASP.NET MVC.
- Aggiungi una cartella App_GlobalResources e Strings.resx file .
- Imposta del file Operazione di generazione 'Risorsa incorporata'
- Aggiungi una stringa di Strings.resx e utilizzarlo in
HomeController.Index()
, per esempioViewData["Message"] = Strings.MyTest
- F5 per eseguire il debug, funziona bene.
- Pubblica su IIS e (dal Strings.resx è escluso dalla pubblicazione) si otterrà l'errore precedente nel sito pubblicato.
Può progetti ASP.NET MVC utilizzare le risorse di stringa compilate nella DLL e in caso affermativo, che cosa sto facendo male?
Aggiornamento: Ecco quello che vedo in Reflector:
Allora, perché è il ResourceManager non trovare loro? Non è forse dovuto ripiego al gruppo principale di default?
Soluzione
Ecco un buon punto di partenza http://odetocode.com/Blogs/scott/archive/2009/07/16/resource-files-and-asp-net-mvc-projects.aspx
I ha installato un progetto proprio come lei ha citato e ottenuto esattamente lo stesso errore quando ho schierato a IIS6. Cambiare Custom Tool
a PublicResXFileCodeGenerator
e Custom Tool Namespace
a Resources
per i suggerimenti di Scott riesce proprio.
Mi piacerebbe segue anche il vantaggio di Scott rispetto al App_GlobalResources eliminando ma ho preso a lavorare bene. Che potrebbe essere una questione di preferenze personali.
Altri suggerimenti
Probabilmente c'è una cosa di più si dovrebbe sapere circa la PublicResXFileCodeGenerator - non funziona con i file che ha più di un punto nel nome di file (vedere http://social.msdn.microsoft .com / forum / RU-RU / 9412f049-acd8-4a77-b73a-f3810df18376 / denominazione-risorse-files-problema-aspnet-MVC-3? forum = dlr ). Così il codebehind per lo Strings.es.resx, Strings.fr.resx, ecc rimane vuoto. La soluzione più semplice è quella di rinominare i file.