Share via


Prostředky v .Resx formátu souboru

Formát souboru prostředků RESX se skládá z položek jazyka XML, které uvnitř značek XML specifikují objekty a řetězce. Výhodou souboru RESX je, že při otevření v textovém editoru (jako je například Poznámkový blok nebo Microsoft Word) do něj lze zapisovat a lze jej analyzovat a upravovat. Při zobrazení souboru RESX lze ve skutečnosti vidět binární formu vloženého objektu (například obrázku), pokud je tato binární informace součástí manifestu prostředku. Kromě těchto binárních informací je soubor RESX zcela čitelný a spravovatelný.

Poznámka

Nepoužívejte soubory prostředků k ukládání hesel, informací citlivých na zabezpečení nebo osobních dat.

Soubor RESX obsahuje standardní sadu informací v hlavičce, která popisuje formát položek prostředků a určuje informace o verzi jazyka XML použítého k analýze dat. Následující příklad ukazuje jak může vypadat typická sada příkazů v hlavičce souboru RESX.

<?xml version="1.0" encoding="utf-8"?>
<root>
    <xsd:schema id="root"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="data">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0"
                    msdata:Ordinal="2" />
                </xsd:sequence>
                    <xsd:attribute name="name" type="xsd:string" />
                    <xsd:attribute name="type" type="xsd:string" />
                    <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
        </xsd:element>

Za informacemi v hlavičce následují položky, každá popsána jako dvojice název-hodnota, velmi podobným způsobem, jako jsou řetězce zadané v souboru TXT. Dvojice název-hodnota je ve formátu RESX zabalena v kódu XML, který popisuje hodnoty řetězců nebo objektů. Pokud je do souboru RESX přidán řetězec, pak název řetězce je vložen do značky <data> a hodnota je uzavřena značkou <value>, jako v následujícím příkladu.

    <data name="string1">
        <value>hello</value>
    </data>

Pokud je do souboru RESX vložen objekt, jsou k popisu položky použity stejné značky <data> a <value> , ale značka <data> obsahuje specifikátor datového typu anebo typu standardu MIME. Specifikátor typu (type) obsahuje datový typ ukládaného objektu. Specifikátor typu standardu MIME (mimetype) obsahuje typ Base64, jako typ binárních uložených informací, pokud objekt obsahuje binární data.

Poznámka

Všechny soubory RESX používají formátovací modul binární serializace pro generování a analýzu binárních dat určeného typu.Soubor RESX se v důsledku toho může stát neplatným, pokud se nekompatibilním způsobem změní formát binární serializace objektu.

Následující příklad ukazuje objekt typu Int32 uložený v souboru RESX a začátek objektu rastrového obrázku, který obsahuje binární informace skutečného souboru GIF.

<data name="i1" type="System.Int32, mscorlib">
        <value>20</value>
    </data>

    <data name="flag" type="System.Drawing.Bitmap, System.Drawing,   
    Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    mimetype="application/x-microsoft.  net.object.bytearray.base64">
        <value>
            AAEAAAD/////AQAAAAAAAAAMAgAAADtTeX…
        </value>
    </data>  

Použití třídy ResXResourceWriter

Lze použít třídu ResXResourceWriter k vytvoření souboru RESX přímo z kódu. Následující příklad ukazuje, jak vytvořit soubor RESX, který jako jeden z prostředků uvnitř souboru ukládá soubor JPG. Nejprve vytvořte obrázek pomocí metody Image.FromFile. Dále vytvořte ResXResourceWriter s jedinečným názvem souboru. Zavolejte metodu ResXResourceWriter.AddResource pro každý obrázek pro přidání do souboru. Nakonec zavolejte metodu ResXResourceWriter.Close pro zapsání obrazové informace do souboru prostředků a zavření ResXResourceWriter.

Imports System
Imports System.Drawing
Imports System.Resources

Public Class SampleClass

    Public Sub Main()
        Dim img As Image
        Dim rsxw As ResXResourceWriter
        img = Image.FromFile("en-AU.jpg")
        rsxw = new ResXResourceWriter("en-AU.resx")
        rsxw.AddResource("en-AU.jpg",img)
        rsxw.Close()
    End Sub
End Class

using System;
using System.Drawing;
using System.Resources;
 
public class SampleClass
{
    public static void Main() 
    {
        Image img = Image.FromFile("en-AU.jpg");
        ResXResourceWriter rsxw = new ResXResourceWriter("en-AU.resx"); 
        rsxw.AddResource("en-AU.jpg",img);
        rsxw.Close();
    }
}

Se souborem RESX lze také manipulovat přímo. Chcete-li se však vyhnout poškození souboru, dejte pozor, abyste neupravovali binární informace v souboru uložené.

Pokud potřebujete získat názvy a hodnoty prostředků v souboru RESX, použijte ResXResourceReader. Příklad kódu, který ukazuje, jak vytvořit ResXResourceReader pro zadaný soubor, jak procházet soubor a jak vytisknout názvy a hodnoty prostředků naleznete v tématu Třída ResXResourceReader.

Soubor RESX nelze vložit do spustitelného souboru ani zkompilovat do satelitního sestavení. Soubor RESX je nutné převést do souboru RESOURCES pomocí nástroje Resource File Generator (resgen.exe). Další informace naleznete v tématu Prostředky ve formátu RESOURCES.

Viz také

Odkaz

Resgen.exe (Resource File Generator)

Koncepty

Vytváření souborů prostředků

Prostředky ve formátu RESOURCES