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?

È stato utile?

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.

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