Pregunta

En primer lugar tengo RFM y RFM y he tratado de seguir algunos sitios pero no pueden captar el concepto de gestor de recursos.

Puede alguien por favor me explique cómo generar un administrador de recursos similar a la de la IDE de VS.

Por ejemplo, si compilo con VBC desde la línea de comandos que puedo ver todos mis archivos de recursos.

  

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

Si compilo con el VS IDE sólo ver:

  

myprogram.Resources.resource

¿Cómo se crea un administrador de recursos de forma manual desde la línea de comandos para que pueda utilizar el administrador de recursos como lo haría con el IDE de VS?

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

Cuando hago trato de usar resgen que se queja de mi archivo de extensión

  

C: ...> fuente resgen imagen.bmp myfile.Resource.resource

     

ResGen: RG0000 de error: El archivo llamado "imagen.bmp" no tiene una extensión conocida. archivos de recursos administrados deben terminar en Resx, .txt, o .resources.

En el Manual se establece para usar RESXGEN para las imágenes, pero no creo que haya en VS2008. Estoy atascado.

Actualización: Encontrado esto: http: // MSDN .microsoft.com / es-es / library / ekyft91f (VS.80) .aspx Explica cómo escribir un archivo ResX. Parece un proceso repetible. No estoy seguro de por qué no incluirían una utilidad con Visual Studio para crearla.

Me trató de utilizar el ejemplo de la ResourceWriter. Resgen vomitó en el uso de los MS proporcionados ResourceWriter Class.

¿Fue útil?

Solución

versión simplificada de un Resx Estudios Visuales archivo generado. He quitado de emergencia pública y las asignaciones de esquema. El mapeo de esquemas es ayudar a que al crear / modificar estos archivos. Para la demostración y la simplicidad He despojado a cabo.

<?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>

Para cada tipo byte o secuencia incluye los siguientes datos. Donde nombre es el nombre que desee acceder a ella por y valor es eitehr una ruta relativa o duro:

<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>

Compilar el recurso a un solo archivo gestor de recursos e incluir en su proyecto

resgen /compile myrex.resx

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

Hay que crear un gestor de recursos en su programa para acceder a estos archivos. Si quieres un administrador de recursos inflexible que debe seguir la clase Resource.Designer desde el interior de su proyecto y modificar ese archivo. Si quieres un administrador de recursos simples o simplemente utilizar GetString GetBytes.

Dim rm As New ResourceManager("rmc", [Assembly].GetExecutingAssembly())
day = rm.GetString("mytext")
o = rm.GetObject("mylibrary.dll")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top