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

업데이트: 2007년 11월

리소스 파일 생성기를 사용하면 텍스트 파일(.txt 또는 .restext)과 XML 기반 리소스 형식 파일(.resx)을 런타임 이진 실행 파일에 포함하거나 위성 어셈블리로 컴파일할 수 있는 공용 언어 런타임의 이진 파일(.resources)로 변환할 수 있습니다. .resources 파일의 배포와 검색에 대한 자세한 내용은 응용 프로그램의 리소스를 참조하십시오.

Resgen.exe를 사용하여 수행할 수 있는 변환 작업은 다음과 같습니다.

  • .txt 또는 .restext 파일을 .resources 또는 .resx 파일로 변환합니다.

    참고

    .restext 확장명은 .NET Framework 버전 2.0에서 도입되었으며 .restext 파일 형식은 .txt 파일 형식과 동일합니다. 그러나 .restext 확장명을 통해 리소스 정의를 포함하고 있는 텍스트 파일을 보다 쉽게 확인할 수 있습니다.

  • .resources 파일을 텍스트 또는 .resx 파일로 변환합니다.

  • .resx 파일을 텍스트 또는 .resources 파일로 변환합니다.

resgen [parameters] [/compile]filename.extension [outputFilename.extension] [/str:lang[,namespace[,class[,file]]]]

매개 변수

인수

설명

filename.extension

변환할 입력 파일의 이름이며, extension은 다음 중 하나여야 합니다.

..txt 또는 .restext

.resources 또는 .resx 파일로 변환할 텍스트 파일의 확장명을 지정합니다. 텍스트 파일에는 문자열 리소스만 포함될 수 있습니다.

.resx

.resources 또는 텍스트 파일(.txt 또는 .restext)로 변환할 XML 기반 리소스 파일의 확장명을 지정합니다.

.resources

.resx 또는 텍스트 파일(.txt 또는 .restext)로 변환할 리소스 파일의 확장명을 지정합니다.

outputFilename.extension

만들려는 리소스 파일의 이름입니다.

.txt, .restext 또는 .resx 파일을 변환하는 경우 이 인수는 선택적 인수입니다. 텍스트 또는 .resx 파일을 .resources 파일로 변환할 때는 .resources 확장명을 지정할 수 있습니다. outputFilename을 지정하지 않으면 Resgen.exe에서는 입력 filename 인수에 .resources 확장명을 추가하고 filename이 들어 있는 디렉터리에 해당 파일을 씁니다.

outputFilename 인수는 .resources 파일에서 변환할 때 사용되는 필수 항목입니다. .resources 파일을 XML 기반 리소스 파일로 변환할 때에는 .resx 확장명을 지정합니다. .resources 파일을 텍스트 파일로 변환할 때는 .txt 또는 .restext 확장명을 지정합니다. .resources 파일에 문자열 값만 있는 경우에는 .resources 파일을 .txt 파일로만 변환해야 합니다.

옵션

설명

/compile

단일 일괄 작업을 통해 여러 .resources 파일로 변환할 여러 .resx 또는 텍스트 파일을 지정할 수 있습니다. 이 옵션을 지정하지 않으면 입력 파일 인수를 하나만 지정할 수 있습니다.

이 옵션은 /str: 옵션과 함께 사용할 수 없습니다.

/publicClass

공용 클래스로 강력한 형식의 리소스 클래스를 만듭니다.

/str: 옵션을 사용하지 않으면 이 옵션은 무시됩니다.

/r:assembly

assembly에서 형식이 로드되도록 지정합니다. 이 옵션을 지정하면 이전 버전의 형식인 .resx 파일이 assembly의 형식을 사용합니다.

/str:language[,namespace[,classname[,filename]]]

language 옵션에 지정된 프로그래밍 언어(C#의 경우 cs 또는 C#, Visual Basic의 경우 vb 또는 visualbasic)로 강력한 형식의 리소스 클래스 파일을 만듭니다. namespace 옵션을 사용하여 프로젝트의 기본 네임스페이스를 지정하거나, classname 옵션을 사용하여 생성되는 클래스의 이름을 지정하거나, filename 옵션을 사용하여 클래스 파일의 이름을 지정할 수 있습니다.

참고

.NET Framework 버전 2.0에서 namespace가 지정되지 않은 경우 classname 및 filename은 무시됩니다.

/str: 옵션을 사용할 때는 입력 파일을 하나만 지정할 수 있으므로 이 옵션과 /compile 옵션을 함께 사용할 수 없습니다.

namespace만 지정하고 classname은 지정하지 않을 경우 출력 파일 이름에서 마침표를 밑줄로 대체하는 등의 방식으로 클래스 이름이 파생됩니다. 따라서 강력한 형식의 리소스가 제대로 작동하지 않을 수도 있습니다. 이 문제를 방지하려면 클래스 이름과 출력 파일 이름을 모두 지정해야 합니다.

/usesourcepath

입력 파일의 현재 디렉터리를 사용하여 상대 경로를 확인하도록 지정합니다.

설명

Resgen.exe를 사용하여 다음의 4가지 클래스에 의해 구현된 메서드를 래핑함으로써 파일을 변환합니다.

ResXResourceWriter 클래스에서 만든 .resx 파일은 .NET Framework 응용 프로그램에서 직접 사용할 수 없습니다. 이 파일을 응용 프로그램에 추가하기 전에 Resgen.exe를 사용하여 해당 파일을 실행시킨 다음 .resources 파일로 변환합니다. 코드에서 이러한 클래스를 구현하는 방법에 대한 자세한 내용은 해당 참조 항목을 참조하십시오.

Resgen.exe를 사용하여 입력 파일의 구문을 분석하려면 텍스트 및 .resx 파일이 올바른 형식을 따라야 합니다.

텍스트 파일(.txt 또는 .restext)은 문자열 리소스만 포함할 수 있습니다. 문자열을 여러 가지 언어로 번역해야 하는 응용 프로그램을 작성하는 경우에는 문자열 리소스를 사용하는 것이 좋습니다. 예를 들어, 해당 문자열 리소스를 사용하면 메뉴 문자열을 쉽게 지역화할 수 있습니다. Resgen.exe를 사용하여 이름/값 쌍이 들어 있는 텍스트 파일을 읽습니다. 여기에서 이름은 해당 리소스를 설명하는 문자열이고, 값은 리소스 문자열 자체입니다. 각 이름/값 쌍을 다음과 같은 형식으로 별도의 줄에 지정해야 합니다.

name=value

텍스트 파일에 빈 문자열도 사용할 수 있습니다. 예를 들면 다음과 같습니다.

EmptyString=

텍스트 파일에 시딜러, 움라우트 및 물결표와 같은 분음 기호 없이 일반 로마 영문자만 들어 있는 경우가 아니면 텍스트 파일을 UTF-8 또는 유니코드 인코딩으로 저장해야 합니다. 예를 들어 Resgen.exe에서는 UTF-8 또는 유니코드 인코딩이 없는 텍스트 파일을 처리할 때 확장된 ANSI 문자를 제거합니다.

Resgen.exe를 사용하여 텍스트 파일에 중복된 리소스 이름이 있는지 확인합니다. 텍스트 파일에 중복된 리소스 이름이 있으면 Resgen.exe에서는 경고를 표시하고 중복된 이름을 무시합니다. 텍스트 파일 형식에 대한 자세한 내용은 텍스트 파일 형식의 리소스를 참조하십시오.

.resx 리소스 파일 형식은 XML 엔트리로 구성되며 텍스트 파일과 유사한 방식으로 이 XML 엔트리 내에 문자열 리소스를 지정할 수 있습니다. 텍스트 파일과 비교했을 때 .resx 파일에는 개체를 포함하거나 지정할 수 있다는 이점이 있습니다. .resx 파일을 볼 때 그림과 같은 포함 개체의 이진 형식이 리소스 매니페스트의 일부인 경우에는 해당 이진 형식을 실제로 볼 수 있습니다. 텍스트 파일과 마찬가지로 .resx 파일을 텍스트 편집기(예: 메모장 또는 Microsoft Word)에서 열어 내용을 쓰고 구문 분석 및 조작할 수 있습니다. 이러한 작업을 수행하려면 XML 태그 및 .resx 파일의 구조에 대해 잘 알고 있어야 합니다. .resx 파일 형식에 대한 자세한 내용은 .Resx 파일 형식의 리소스를 참조하십시오.

비문자열 포함 개체가 들어 있는 .resources 파일을 만들려면 Resgen.exe를 사용하여 개체가 들어 있는 .resx 파일을 변환하거나, ResourceWriter 클래스에서 제공하는 메서드를 사용하여 코드에서 개체 리소스를 해당 파일에 직접 추가해야 합니다. Resgen.exe를 사용하여 개체가 들어 있는 .resources 파일을 텍스트 파일로 변환하면 모든 문자열 리소스는 올바르게 변환되지만 문자열이 아닌 개체의 데이터 형식도 파일에 문자열로 기록됩니다. 따라서 변환 시 포함 개체가 손실되고 Resgen.exe에서는 리소스 검색 시 오류가 발생했다는 메시지를 전달합니다.

.NET Framework 버전 2.0에서는 강력한 형식의 리소스를 지원합니다. 강력한 형식의 리소스가 지원되면 정적 읽기 전용(get) 속성 집합을 포함하는 클래스를 만들어 리소스에 대한 액세스를 캡슐화할 수 있으므로 ResourceManager 클래스의 메서드를 직접 사용하지 않고도 리소스를 소비할 수 있습니다. 기본 기능은 StronglyTypedResourceBuilder 클래스의 기능을 래핑하는 Resgen.exe의 /str 명령줄 옵션에서 제공됩니다. /str 옵션을 지정하면 입력 매개 변수에서 참조되는 리소스와 일치하는 강력한 형식의 속성이 포함된 클래스가 Resgen.exe의 출력이 됩니다. 이 클래스에서는 처리되는 파일에서 사용할 수 있는 리소스에 대한 강력한 형식의 읽기 전용 액세스가 가능합니다.

리소스 파일 생성기(Resgen.exe) 도구를 사용하면 .resources 파일과 강력한 형식의 래퍼를 만들어 .resources 파일에 액세스할 수 있습니다. 강력한 형식의 래퍼를 만들 때 .resources 파일의 이름은 생성된 코드의 네임스페이스와 클래스 이름(예: MyNamespace.MyClass.resources)과 일치해야 합니다. 그러나 리소스 파일 생성기(Resgen.exe) 도구를 사용하면 호환되지 않는 이름을 가진 .resources 파일을 생성하는 옵션을 지정할 수 있습니다. 이 동작을 연습하려면 리소스 파일 생성기(Resgen.exe) 도구에서 파일을 생성한 후 호환되지 않는 이름을 가진 출력 파일의 이름을 변경하십시오.

Resgen.exe를 사용하여 .resources 파일을 만든 다음에는 어셈블리 링커(Al.exe)를 사용하여 런타임 이진 실행 파일에 리소스를 포함시키거나 리소스를 위성 어셈블리로 컴파일합니다.

참고

Resgen.exe에서 어떤 이유로든 오류가 발생하면 반환되는 값은 –1입니다.

참고

Resgen.exe에서 강력한 형식의 리소스 클래스를 생성할 때 공백이 포함된 .resx 파일 이름은 사용할 수 없습니다. 모든 잘못된 문자는 밑줄("_")로 바뀝니다. 자세한 내용은 VerifyResourceName을 참조하십시오.

예제

지정된 옵션이 없는 다음 명령을 사용하여 Resgen.exe의 명령 구문 및 옵션을 표시합니다.

resgen

다음 명령을 사용하여 myResources.txt에 있는 이름/값 쌍을 읽고 myResources.resources. 라는 이진 리소스 파일을 작성합니다. 출력 파일 이름이 명시적으로 지정되어 있지 않으므로 기본적으로 입력 파일과 동일한 이름을 사용합니다.

resgen myResources.txt 

다음 명령을 사용하여 myResources.restext에 있는 이름/값 쌍을 읽고 yourResources.resources라는 이진 리소스 파일을 작성합니다.

resgen myResources.restext yourResources.resources

다음 명령을 사용하여 XML 기반 입력 파일인 myResources.resx를 읽고 myResources.resources라는 이진 리소스 파일을 작성합니다.

resgen myResources.resx myResources.resources

다음 명령을 사용하여 이진 리소스 파일 myResources.resources를 읽고 myResources.resx라는 XML 기반 출력 파일을 작성합니다.

resgen myResources.resources myResources.resx

다음 명령을 사용하여 myResources.resx라는 XML 기반 입력 파일을 읽고 myResources.txt 및 myResources.restext라는 텍스트 파일을 각각 작성합니다. .resx 파일에 포함 개체가 있으면 텍스트 파일로 정확하게 변환되지 않습니다.

resgen myResources.resx myResources.txt
resgen myResources.resx myResources.restext

다음 명령을 사용하여 XML 기반 입력 파일인 myResources.resx를 읽고 myResources.resources라는 이진 리소스 파일을 작성합니다. 또한 입력 파일에서 참조되는 리소스와 일치하는 강력한 형식의 속성이 포함된 MyFile.vb라는 클래스를 사용하여 MyClass라는 Visual Basic 파일도 생성합니다. MyClass 클래스는 Namespace1이라는 네임스페이스에 들어 있습니다.

resgen myResources.resx myResources.resources /str:C#,Namespace1,MyClass,MyFile.cs

참고 항목

개념

응용 프로그램의 리소스

참조

.NET Framework 도구

System.Resources.Tools

어셈블리 링커(Al.exe)

SDK 명령 프롬프트

기타 리소스

인코딩 및 지역화