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:

  1. Creare un nuovo progetto ASP.NET MVC.
  2. Aggiungi una cartella App_GlobalResources e Strings.resx file .
  3. Imposta del file Operazione di generazione 'Risorsa incorporata'
  4. Aggiungi una stringa di Strings.resx e utilizzarlo in HomeController.Index(), per esempio ViewData["Message"] = Strings.MyTest
  5. F5 per eseguire il debug, funziona bene.
  6. 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: Risorse di stringa

Allora, perché è il ResourceManager non trovare loro? Non è forse dovuto ripiego al gruppo principale di default?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top