2012-07-18 2 views
8

Questa è la mia prima domanda qui!Modifica ASP.NET MVC 3 resx in server di distribuzione senza dover ricompilare

Ho un ASP.NET MVC 3 del progetto con una cartella Proprietà, che contiene alcuni file resx utilizzati al contenuto differenza di miei punti di vista per lingua (it/es). Sto lavorando in VS2010 con .Net 4.

Quando distribuisco l'applicazione sul server, trovo che nessun file resx è pubblicato, e invece di esso ho alcuni file .dll.

Ho impostato l'azione di creazione su Embedded resource, Do not copy per la directory di output e PublicResXFileCodeGenerator come strumento personalizzato nelle proprietà dei file .resx.

voglio avere i file RESX sul server ed essere in grado di modificarli senza ricompilazione o ridistribuire. Le viste dovrebbero usare quelle modifiche.

Come posso farlo?

Grazie per il vostro aiuto !!

+1

Ho avuto i file resx nella cartella Proprietà. Forse usarli dalla cartella App_GlobalResources mi consentirà di farlo? – Jawen

+1

Ho provato quella soluzione e funziona! – Jawen

+0

PublicResXFileCodeGenerator sembra essere un wrapper per http://msdn.microsoft.com/en-us/library/system.resources.tools.stronglytypedresourcebuilder.aspx che converte resx in classi (dlls). È necessario per quello che stai facendo? –

risposta

3

Inserire i file resx nelle App_GlobalResources e cambiare il "Build Azione" per contenuti e "Copia in uscita Directory" a false. Assicurarsi che lo strumento "Custom" è impostato su GlobalResourceProxyGenerator

che dovrebbe rendere loro mutevole anche in fase di esecuzione.

Si può semplicemente utilizzare XPath per interrogare su di loro, prendere le chiavi, i valori e commenti e modificare a piacimento utilizzando un XDocument.

si dovrebbe anche sapere che una cosa del genere non funzionerà con di pubblicare perché App_GlobalResources non è consentito con il sito precompilato Visual Studio.

+0

Grazie Adam. Quando ho trovato quella soluzione ho provato e ha funzionato bene! – Jawen

+0

@Adam Tal, ho seguito i passaggi precedenti, è preoccupante ma tutte le sessioni vengono cancellate/il pool di app viene riciclato dopo aver modificato la risorsa stringa in fase di runtime. Come l'hai sostenuto? – Pawan

+0

@Pawan - Il pool di applicazioni verrà riciclato una volta rilevate eventuali modifiche in App_GlobalResources - non si dovrebbe modificare molto il resx! Se hai una tale necessità potresti prendere in considerazione una soluzione basata su database –