.Resx 파일 형식의 리소스

.resx 리소스 파일 형식은 XML 태그 내에 개체와 문자열을 지정하는 XML 엔트리로 구성됩니다. 메모장이나 Microsoft Word 같은 텍스트 편집기에서 .resx 파일을 열면 파일에 대한 쓰기, 구문 분석 및 조작이 가능합니다. .resx 파일을 볼 때 이 이진 정보가 리소스 매니페스트의 일부인 경우에는 포함된 개체(예: 그림)의 이진 형식을 실제로 볼 수 있습니다. 이 이진 정보와는 별도로 .resx 파일을 완벽하게 읽고 유지 관리할 수 있습니다.

참고

암호, 보안이 중요한 정보 또는 개인 데이터를 저장할 때는 리소스 파일을 사용하지 마십시오.

.resx 파일은 리소스 엔트리의 형식을 기술하고 데이터를 구문 분석하는 데 사용되는 XML의 버전 관리 정보를 지정하는 표준 헤더 정보 집합을 포함합니다. 다음 예제에서는 .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>

헤더 정보 다음에는 .txt 파일에서 문자열을 지정하는 것과 매우 유사한 이름/값 쌍 방식으로 각 엔트리를 기술합니다. .resx 형식의 이름/값 쌍은 XML 코드에 래핑되어 문자열 또는 개체 값을 기술합니다. .resx 파일에 문자열이 추가되면 다음 예제와 같이 문자열 이름은 <data> 태그에 포함하고 값은 <value> 태그로 묶습니다.

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

.resx 파일에 개체가 삽입되면 동일한 <data><value> 태그를 사용하여 엔트리를 기술하지만 <data> 태그는 형식 또는 MIME 형식 지정자를 포함합니다. 형식 지정자는 저장되는 개체의 데이터 형식을 보유하고, MIME 형식 지정자는 개체가 이진 데이터로 구성되어 있는 경우 저장된 이진 정보의 기본 형식(Base64)을 보유합니다.

참고

모든 .resx 파일에서는 이진 serialization 포맷터를 사용하여 지정된 형식에 대한 이진 데이터를 생성하고 구문을 분석합니다.따라서 개체에 대한 이진 serialization 형식이 호환되지 않는 방식으로 변경되면 .resx 파일이 올바르지 않게 될 수 있습니다.

다음 예제에서는 .resx 파일에 저장된 Int32 개체와 실제 .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>  

ResXResourceWriter 클래스 사용

ResXResourceWriter 클래스를 사용하여 코드에서 직접 .resx 파일을 만들 수 있습니다. 다음 예제에서는 .jpg 파일을 파일 내의 리소스 중 하나로 저장하는 .resx 파일을 만드는 방법을 보여 줍니다. 먼저 Image.FromFile 메서드를 사용하여 이미지를 만듭니다. 그런 다음 고유한 파일 이름을 사용하여 ResXResourceWriter를 만들고, 파일에 추가할 각 이미지에 대해 ResXResourceWriter.AddResource 메서드를 호출합니다. 마지막으로 ResXResourceWriter.Close 메서드를 호출하여 이미지 정보를 리소스 파일에 쓰고 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();
    }
}

.resx 파일을 직접 조작할 수도 있습니다. 그러나 파일이 손상되지 않도록 파일에 저장된 이진 정보를 수정하지 않아야 합니다.

.resx 파일에서 리소스의 이름과 값을 검색해야 하는 경우에는 ResXResourceReader를 사용합니다. 특정 파일에 대한 ResXResourceReader를 만들고 파일 전체를 반복하여 리소스의 이름과 값을 출력하는 방법을 보여 주는 코드 예제는 ResXResourceReader 클래스를 참조하십시오.

.resx 파일은 런타임 실행 파일에 포함하거나 위성 어셈블리로 컴파일할 수 없습니다. 리소스 파일 생성기(Resgen.exe)를 사용하여 .resx 파일을 .resources 파일로 변환해야 합니다. 자세한 내용은 .Resources 파일 형식의 리소스를 참조하십시오.

참고 항목

참조

Resgen.exe(리소스 파일 생성기)

개념

리소스 파일 만들기

.Resources 파일 형식의 리소스