Domanda

Prima di tutto devo RFM RFM e ho cercato di seguire alcuni siti, ma non posso afferrare il concetto di Resource Manager.

Qualcuno può per favore mi spieghi come generare un gestore di risorse simile a quello del VS IDE.

Per esempio, se compilo con VBC da linea di comando che posso vedere tutte le mie file di risorse.

  

vbc / t: exe myfile.vb / res: res1 / res: res2

Dim a as Assembly = Assembly.GetExecutingAssembly()
For Each i as string in a.GetManifestResourceNames()
    Console.writeline(i)
Next i
  

res1

     

res2

Se io compilo con VS IDE vedo solo:

  

myprogram.Resources.resource

Come faccio a creare un gestore di risorse manualmente dalla riga di comando in modo che possa utilizzare il gestore delle risorse come farei con il VS IDE?

Dim CurrentResourceManager As New ResourceManager(_
"myprogram.Resources", CurrentAssembly)
Dim CurrentResourceSet As ResourceSet = CurrentResourceManager.GetResourceSet( _
CultureInfo.CurrentCulture, True, True)

Quando faccio cerco di usare resgen si lamenta il mio file estensione

  

C: ...> fonte resgen image.bmp myfile.Resource.resource

     

ResGen: l'errore RG0000: Il file denominato "image.bmp" non ha un'estensione nota. file di risorse gestite devono terminare in Resx, .txt o resources.

Nel manuale si afferma di utilizzare ResXGen per le immagini, ma non credo che è disponibile in VS2008. Sono bloccato.

Aggiornamento: Ho trovato questo: http: // msdn .microsoft.com / en-us / library / ekyft91f (VS.80) aspx Spiega come scrivere un file ResX. Sembra un processo ripetibile. Non sono sicuro perché non dovrebbe includere un programma di utilità con Visual Studio per crearla.

Ho cercato di usare l'esempio del ResourceWriter. Resgen vomitato su utilizzando i MS forniti ResourceWriter classe.

È stato utile?

Soluzione

versione semplificata di un Visual Studio Resx file generato. Ho rimosso pubblica Token e le mappature di schema. La mappatura dello schema è quello di aiutarvi durante la creazione / modifica di questi file. Per la dimostrazione e la semplicità che ho messo a nudo fuori.

<?xml version="1.0" encoding="utf-8"?>
<root>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral</value>
  </resheader>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral" />
  <data name="mylibrary" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\mylibrary.dll;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral</value>
  </data>
  <data name="mytext" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\mytext.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral</value>
  </data>
</root>

Per ogni tipo byte o stringa di includere i seguenti dati. Dove nome è il nome che si desidera accedervi dalla qualità si eitehr un percorso relativo o difficile:

<data name="mytext" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\mytext.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral</value>
<data>

Compila la risorsa in un unico file gestore di risorse e includere nel progetto

resgen /compile myrex.resx

vbc /t:exe myprogram.vb /res:myresx.resource
csc /t:exe myprogram.cs /res:myresx.resource

È necessario creare un gestore di risorse nel programma per accedere a questi file. Se si desidera un gestore di risorse fortemente tipizzato è necessario seguire la classe Resource.Designer da dentro il vostro progetto e modificare il file. Se si desidera che un semplice gestore di risorse sufficiente utilizzare GetString o GetBytes.

Dim rm As New ResourceManager("rmc", [Assembly].GetExecutingAssembly())
day = rm.GetString("mytext")
o = rm.GetObject("mylibrary.dll")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top