Converti il ??testo in file .resources
-
05-07-2019 - |
Domanda
Ho creato una nuova soluzione VS che deve contenere un sottoinsieme modificato di file da un'altra soluzione. Entrambe le soluzioni hanno uno spazio dei nomi predefinito di " Microsoft.Windows.Controls " ;. L'assembly della vecchia soluzione è denominato "WPFToolkit" e il nuovo nome dell'assembly è "DatePicker". Uno dei file che ho copiato nella nuova soluzione è una risorsa incorporata denominata " ExceptionStringTable.txt " ;. Il contenuto è simile al seguente, anche se non sono sicuro del formato:
; DataGrid Selection Commands DataGrid_SelectAllCommandText=Select All DataGrid_SelectAllKey=Ctrl+A DataGrid_SelectAllKeyDisplayString=Ctrl+A
Ho impostato l'azione di compilazione del file " a " Risorsa integrata " come nella soluzione originale. In fase di esecuzione, viene caricato in questo modo:
private static ResourceManager _resourceManager = new ResourceManager("ExceptionStringTable", typeof(SR).Assembly);
Al momento dell'esecuzione del codice
_resourceManager.GetString(id.String)Ricevo questa eccezione di runtime:
Si è verificata System.Resources.MissingManifestResourceException Messaggio = " Impossibile trovare risorse appropriate per la cultura specificata o per la cultura neutra. Assicurati \ " ExceptionStringTable.resources \ " è stato correttamente incorporato o collegato nell'assembly \ " DatePicker \ " al momento della compilazione o che tutti gli assemblaggi di satelliti richiesti sono caricabili e completamente firmati. "
Elenco programmatico dei nomi delle risorse dell'assembly, ottengo questo:
DatePicker.g.resources Microsoft.Windows.Controls.Resources.ExceptionStringTable.txt Microsoft.Windows.Controls.Properties.Resources.resources
Cosa devo fare in modo che ExceptionStringTable.txt venga convertito nel suo equivalente .resources quindi incorporato nel mio assembly in modo tale che l'uri "ExceptionStringTable " lo trova?
Soluzione
Devi convertire il file txt in un file .resource:
resgen.exe ExceptionStringTable.txt
Questo genererà un file ExceptionStringTable.resources. Questo file deve quindi essere aggiunto come risorsa incorporata
Probabilmente vuoi controllare il vecchio file di progetto per vedere se esiste un'attività postbuild o qualcosa che lo fa automaticamente.
UPDATE:
Il modo più semplice per te è probabilmente convertire il file .txt in un file .resx:
resgen.exe ExceptionStringTable.txt ExceptionStringTable.resx
E quindi aggiungere questo file come risorsa incorporata. Successivamente puoi eliminare il vecchio file .txt.