문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
이 설명서는 보관되지만 유지 되지 않습니다.

ResourceManager 클래스

업데이트: 2010년 12월

이 클래스를 사용하면 런타임에 문화권별 리소스에 간편하게 액세스할 수 있습니다.

네임스페이스:  System.Resources
어셈블리:  mscorlib(mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ResourceManager

ResourceManager 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Protected 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifResourceManager()기본값을 사용하여 ResourceManager 클래스의 새 인스턴스를 초기화합니다.
Public 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifResourceManager(Type)지정된 Type의 정보를 기초로 위성 어셈블리에서 리소스를 찾는 ResourceManager를 만듭니다.
Public 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifResourceManager(String, Assembly)지정된 어셈블리를 사용하여 지정된 루트 이름에서 파생된 파일에 포함된 리소스를 찾는 ResourceManager 클래스의 새 인스턴스를 초기화합니다.
Public 메서드XNA Framework에서 지원ResourceManager(String, Assembly, Type)지정된 Assembly를 사용하여 지정된 루트 이름에서 파생된 파일에 포함된 리소스를 찾는 ResourceManager 클래스의 새 인스턴스를 초기화합니다.
위쪽

  이름설명
Public 속성XNA Framework에서 지원BaseName ResourceManager 에서 리소스를 검색하는 리소스 파일의 루트 이름을 가져옵니다.
Protected 속성FallbackLocation중립 대체(fallback) 리소스를 검색할 위치를 가져오거나 설정합니다.
Public 속성XNA Framework에서 지원IgnoreCaseResourceManager의 현재 인스턴스를 사용하여 GetStringGetObject 메서드에서 대/소문자를 구분하지 않고 리소스를 조회할 수 있는지 여부를 나타내는 부울 값을 가져오거나 설정합니다.
Public 속성XNA Framework에서 지원ResourceSetType ResourceManager ResourceSet 개체를 생성하는 데 사용하는 ResourceSetType을 가져옵니다.
위쪽

  이름설명
Public 메서드정적 멤버XNA Framework에서 지원CreateFileBasedResourceManager어셈블리 매니페스트 대신 특정 디렉터리에서 리소스를 검색하는 ResourceManager를 반환합니다.
Public 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifEquals(Object)지정한 Object가 현재 Object와 같은지 여부를 확인합니다. (Object에서 상속됨)
Protected 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifFinalize 개체가 가비지 수집자에서 회수되기 전에, 해당 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifGetHashCode특정 형식에 대한 해시 함수 역할을 합니다. (Object에서 상속됨)
Protected 메서드정적 멤버XNA Framework에서 지원GetNeutralResourcesLanguage지정된 Assembly에서 NeutralResourcesLanguageAttribute의 값을 읽어서 주 어셈블리의 중립 리소스에 대한 CultureInfo를 반환합니다.
Public 메서드XNA Framework에서 지원GetObject(String)지정된 Object 리소스의 값을 반환합니다.
Public 메서드XNA Framework에서 지원GetObject(String, CultureInfo)지정된 문화권에 대해 지역화된 Object 리소스의 값을 가져옵니다.
Protected 메서드XNA Framework에서 지원GetResourceFileName지정된 CultureInfo에 대한 리소스 파일 이름을 생성합니다.
Public 메서드XNA Framework에서 지원GetResourceSet특정 문화권에 대한 ResourceSet을 가져옵니다.
Protected 메서드정적 멤버XNA Framework에서 지원GetSatelliteContractVersion지정된 어셈블리의 SatelliteContractVersionAttribute에서 지정한 Version을 반환합니다.
Public 메서드GetStream(String)지정된 리소스에서 UnmanagedMemoryStream 개체를 반환합니다.
Public 메서드GetStream(String, CultureInfo)지정된 문화권을 사용하여 지정된 리소스에서 UnmanagedMemoryStream 개체를 반환합니다.
Public 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifGetString(String)지정된 String 리소스의 값을 반환합니다.
Public 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifGetString(String, CultureInfo)지정된 문화권에 대해 지역화된 String 리소스의 값을 가져옵니다.
Public 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifGetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드XNA Framework에서 지원InternalGetResourceSet ResourceSet 을 찾는 구현을 제공합니다.
Protected 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifMemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드XNA Framework에서 지원ReleaseAllResources ResourceManager 에 모든 ResourceSet 개체의 Close를 호출하고 모든 리소스를 해제하도록 알립니다.
Public 메서드XNA Framework에서 지원2xsy4hac.PortableClassLibrary(ko-kr,VS.100).gifToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
위쪽

  이름설명
Protected 필드XNA Framework에서 지원BaseNameField ResourceManager 에서 리소스를 검색하는 리소스 파일의 루트 이름을 나타냅니다.
Public 필드정적 멤버XNA Framework에서 지원HeaderVersionNumber현재의 ResourceManager 구현에서 해석하고 생성할 수 있는 리소스 파일 헤더의 버전을 나타내는 readonly 상수 값입니다.
Public 필드정적 멤버XNA Framework에서 지원MagicNumber리소스 파일을 식별하는 데 사용되는 숫자를 유지합니다.
Protected 필드XNA Framework에서 지원MainAssembly리소스를 포함하는 기본 Assembly를 나타냅니다.
Protected 필드XNA Framework에서 지원ResourceSets 사용되지 않습니다. 문화권에서 ResourceSet 개체로의 매핑을 반환하는 Hashtable이 들어 있습니다.
위쪽

ResourceManager 클래스에서는 문화권별 리소스를 찾아서 지역화된 리소스가 없는 경우 대체 리소스를 제공하고 리소스 serialization을 지원합니다.

ResourceManager 클래스는 이진 리소스(.resources) 파일에서 리소스를 검색합니다. 일반적으로 이러한 리소스 파일은 CreateFileBasedResourceManager 메서드가 ResourceManager 개체에서 어셈블리에 포함되지 않은 .resources 파일로부터 직접 리소스를 검색하는 것을 허용하기는 하지만 언어 컴파일러 또는 어셈블리 링커(AL.exe)에 의해 어셈블리에 포함됩니다. 텍스트(.txt) 또는 XML 리소스(.resx) 형식을 만들려면 리소스 파일 생성기(Resgen.exe)를 사용하여 컴파일합니다. Visual Studio 프로젝트에 포함된.resx 파일의 경우 Visual Studio가 컴파일을 빌드 프로세스의 일부로 자동 처리합니다.

호출자는 ResourceManager의 메서드를 사용할 수 있으므로 호출자는 GetObjectGetString 메서드를 사용하여 특정 문화권에 대한 리소스에 액세스할 수 있습니다. 기본적으로 이러한 메서드는 호출한 스레드의 현재 문화권으로 결정된 문화권에 대한 리소스를 반환합니다. 자세한 내용은 Thread.CurrentUICulture를 참조하십시오. 호출자는 ResourceManager.GetResourceSet 메서드를 사용하여 문화권 대체 규칙을 무시하고 특정 문화권에 대한 리소스를 나타내는 ResourceSet을 가져올 수 있습니다. 그런 다음 ResourceSet을 사용하여 해당 문화권에 대해 지역화된 리소스에 이름으로 액세스할 수 있습니다.

모든 언어에 대한 리소스를 만들거나 최소한 의미 있는 언어의 하위 집합을 만들어야 합니다. 리소스 파일 이름은 basename.cultureName.resources 명명 규칙을 따릅니다. 여기에서 basename은 필요한 세부 정도에 따라 응용 프로그램 이름 또는 클래스 이름입니다. CultureInfo Name 속성은 cultureName을 확인하는 데 사용됩니다. InvariantCulture 에서 반환된 중립 문화권에 대한 리소스 이름은 basename.resources로 지정되어야 합니다.

예를 들어, 어셈블리의 리소스 파일에 기본 이름이 "MyResources"인 리소스가 몇 개 있다고 하면, 이러한 리소스 파일은 "MyResources.ja-JP.resources", "MyResources.de.resources", "MyResources.zh-CHS.resources", "MyResources.fr-BE.resources" 등의 이름을 가지며, 각각 일본어, 독일어, 중국어 간체 및 프랑스어(벨기에)에 대한 리소스를 포함합니다. 기본 리소스 파일의 이름은 MyResources.resources로 지정되어야 합니다. 일반적으로 문화권별 리소스 파일은 각 문화권에 대해 위성 어셈블리에 패키지됩니다. 기본 리소스 파일은 주 어셈블리에 있어야 합니다.

이 기본 이름을 갖는 리소스를 나타내는 ResourceManager가 만들어진 경우 ResourceManager 를 사용하면 GetResourceSet(new CultureInfo ("ja-JP"), TRUE, FALSE)을 호출하여 "MyResources.ja-JP.resources"를 캡슐화하는 ResourceSet을 가져올 수 있습니다. 또는 "MyResources""TOOLBAR_ICON"이라는 리소스가 들어 있다는 것을 아는 경우 GetObject("TOOLBAR_ICON", new CultureInfo("ja-JP"))를 호출하여 일본어에 맞게 지역화된 해당 리소스의 값을 가져올 수 있습니다.

ResourceManager 를 기본적인 방법으로 사용하는 대부분의 경우에는 꼭 필요하지 않지만, 공개적으로 제공되는 어셈블리에서는 위성 어셈블리를 다시 배포하지 않고도 주 어셈블리의 버전을 관리할 수 있도록 SatelliteContractVersionAttribute를 사용하고, 존재하지 않는 위성 어셈블리를 조회하지 않도록 NeutralResourcesLanguageAttribute를 사용해야 합니다.

위성 어셈블리의 버전 관리 지원에 대한 자세한 내용은 위성 어셈블리의 리소스 검색을 참조하십시오. 위성 어셈블리 만들기에 대한 자세한 내용은 위성 어셈블리 만들기를 참조하십시오. Windows Forms 대화 상자 지역화에 대한 자세한 내용은 Windows SDK(소프트웨어 개발 키트)에 있는 Winres.exe(Windows Forms 리소스 편집기) 도구를 참조하십시오.

리소스 설정 및 만들기에 대한 자세한 내용은 응용 프로그램의 리소스를 참조하십시오.

주의 정보주의

ASP.NET 응용 프로그램에서 독립 실행형 .resources 파일을 사용하면 ReleaseAllResources 메서드를 사용하여 명시적으로 잠금을 해제할 때까지는 리소스가 잠겨 있기 때문에 XCOPY 배포가 중단됩니다. 리소스를 ASP.NET 응용 프로그램에 배포하려면 .resources를 위성 어셈블리에 컴파일해야 합니다.

주의 정보주의

전용으로 표시된 리소스는 해당 리소스가 포함된 어셈블리에서만 액세스할 수 있습니다. 위성 어셈블리에는 코드가 없기 때문에 이 어셈블리의 전용 리소스는 어떤 메커니즘으로도 사용할 수 없습니다. 따라서 위성 어셈블리의 리소스는 주 어셈블리에서 사용할 수 있도록 항상 공용이어야 합니다. 주 어셈블리에 포함된 리소스는 공용이든 전용이든 상관 없이 주 어셈블리에 액세스할 수 있습니다.

<satelliteassemblies> 구성 파일 노드

웹 사이트에서 배포 및 실행되는 실행 파일(HREF .exe 파일)의 경우에는 ResourceManager 클래스가 웹에서 위성 어셈블리를 조사할 수 있으며 이로 인해 응용 프로그램 성능이 저하될 수 있습니다. 따라서 응용 프로그램과 함께 배포한 위성 어셈블리만 조사하도록 범위를 제한하여 성능 문제가 발생하지 않도록 하는 것이 좋습니다. 응용 프로그램 구성 파일에 <satelliteassemblies> 노드를 만들어, 응용 프로그램에 대해 특정 문화권 집합을 배포했으며 ResourceManager 클래스에서 해당 노드에 나열되지 않은 문화권을 조사하지 않도록 지정하면 됩니다.

참고참고

<satelliteassemblies> 노드를 만드는 것보다 좋은 방법은 ClickOnce 배포 매니페스트 기능을 사용하는 것입니다.

다음 코드 예제와 같은 구성 파일 섹션을 만듭니다.

<?xml version ="1.0"?>
<configuration>
    <satelliteassemblies>
        <assembly name="MainAssemblyName, Version=versionNumber, Culture=neutral, PublicKeyToken=null|yourPublicKeyToken">
            <culture>cultureName1</culture>
            <culture>cultureName2</culture>
            <culture>cultureName3</culture>
        </assembly>
    </satelliteassemblies>
</configuration>

구성 파일에서 다음을 수행합니다.

  • 배포하는 각 주 어셈블리에 대해 <assembly> 노드를 하나 이상 지정합니다. 여기서 <assembly> 노드 특성은 정규화된 어셈블리 이름을 지정합니다. MainAssemblyName 대신 주 어셈블리의 이름을 지정하고 이 주 어셈블리에 해당하는 Version, PublicKeyTokenCulture 특성 값을 지정합니다.

    Version 특성의 경우 어셈블리의 버전 번호를 지정합니다. 예를 들어, 첫 번째 어셈블리 릴리스의 버전 번호는 1.0.0.0일 수 있습니다.

    PublicKeyToken 특성의 경우 강력한 이름으로 어셈블리에 서명하지 않았으면 "null"을 지정하고, 어셈블리에 서명했으면 공개 키 토큰을 지정합니다.

    Culture 특성의 경우 "neutral" 키워드를 사용하여 주 어셈블리를 지정하고 ResourceManager 클래스에서 <culture> 노드에 나열된 문화권만 조사하도록 합니다.

    정규화된 어셈블리 이름에 대한 자세한 내용은 어셈블리 이름을 참조하십시오. 강력한 이름의 어셈블리에 대한 자세한 내용은 강력한 이름의 어셈블리 만들기 및 사용를 참조하십시오.

  • "fr-FR"와 같은 특정 문화권 이름이나 "fr"와 같은 중립 문화권 이름을 사용하여 <culture> 노드를 하나 이상 지정합니다.

<satelliteassemblies> 노드에 나열되지 않은 어셈블리에 리소스가 필요한 경우 ResourceManager 클래스에서는 표준 조사 규칙을 사용하여 문화권을 조사합니다.

다음 코드 예제에서는 명시적 문화권과 암시적 현재 UI 문화권을 사용하여 주 어셈블리와 위성 어셈블리에서 문자열 리소스를 가져오는 방법을 보여 줍니다. 자세한 내용은 위성 어셈블리 만들기 항목의 "전역 어셈블리 캐시에 설치되지 않은 위성 어셈블리의 디렉터리 위치" 하위 항목을 참조하십시오.


// This code example demonstrates the ResourceManager() 
// constructor and ResourceManager.GetString() method.

using System;
using System.Resources;
using System.Reflection;
using System.Threading;
using System.Globalization;

/*
Perform the following steps to use this code example:

Main assembly:
1) In a main directory, create a file named "rmc.txt" that 
contains the following resource strings:

day=Friday
year=2006
holiday="Cinco de Mayo"

2) Use the resgen.exe tool to generate the "rmc.resources" 
resource file from the "rmc.txt" input file.

> resgen rmc.txt

Satellite Assembly:
3) Create a subdirectory of the main directory and name the 
subdirectory "es-MX", which is the culture name of the 
satellite assembly.

4) Create a file named "rmc.es-MX.txt" that contains the 
following resource strings:

day=Viernes
year=2006
holiday="Cinco de Mayo"

5) Use the resgen.exe tool to generate the "rmc.es-MX.resources" 
resource file from the "rmc.es-MX.txt" input file.

> resgen rmc.es-MX.txt

6) Use the al.exe tool to create a satellite assembly. If the 
base name of the application is "rmc", the satellite assembly 
name must be "rmc.resources.dll". Also, specify the culture, 
which is es-MX.

> al /embed:rmc.es-MX.resources /c:es-MX /out:rmc.resources.dll 

7) Assume the filename for this code example is "rmc.cs". Compile 
rmc.cs and embed the main assembly resource file, rmc.resources, in 
the executable assembly, rmc.exe:

>csc /res:rmc.resources rmc.cs

8) Execute rmc.exe, which obtains and displays the embedded 
resource strings.
*/

class Sample 
{
    public static void Main() 
    {
    string day;
    string year;
    string holiday;
    string celebrate = "{0} will occur on {1} in {2}.\n";

// Create a resource manager. The GetExecutingAssembly() method
// gets rmc.exe as an Assembly object.

    ResourceManager rm = new ResourceManager("rmc", 
                             Assembly.GetExecutingAssembly());

// Obtain resources using the current UI culture.
    Console.WriteLine("Obtain resources using the current UI culture.");

// Get the resource strings for the day, year, and holiday 
// using the current UI culture. Use those strings to 
// display a message.

    day  = rm.GetString("day");
    year = rm.GetString("year");
    holiday = rm.GetString("holiday");
    Console.WriteLine(celebrate, holiday, day, year);

// Obtain the es-MX culture.
    CultureInfo ci = new CultureInfo("es-MX");

// Get the resource strings for the day, year, and holiday 
// using the specified culture. Use those strings to 
// display a message. 

// Obtain resources using the es-MX culture.
    Console.WriteLine("Obtain resources using the es-MX culture.");

    day  = rm.GetString("day", ci);
    year = rm.GetString("year", ci);
    holiday = rm.GetString("holiday", ci);

// ---------------------------------------------------------------
// Alternatively, comment the preceding 3 code statements and 
// uncomment the following 4 code statements:
// ----------------------------------------------------------------

// Set the current UI culture to "es-MX" (Spanish-Mexico).
//    Thread.CurrentThread.CurrentUICulture = ci;

// Get the resource strings for the day, year, and holiday 
// using the current UI culture. Use those strings to 
// display a message. 
//    day  = rm.GetString("day");
//    year = rm.GetString("year");
//    holiday = rm.GetString("holiday");
// ---------------------------------------------------------------

// Regardless of the alternative that you choose, display a message 
// using the retrieved resource strings.
    Console.WriteLine(celebrate, holiday, day, year);
    }
}

/*
This code example produces the following results:

>rmc
Obtain resources using the current UI culture.
"5th of May" will occur on Friday in 2006.

Obtain resources using the es-MX culture.
"Cinco de Mayo" will occur on Viernes in 2006.

*/


.NET Framework

4, 3.5, 3.0, 2.0, 1.1, 1.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

에서 지원

Windows 7, Windows Vista SP1 이상, Windows XP SP3, Windows XP SP2 x64 버전, Windows Server 2008(Server Core는 지원되지 않음), Windows Server 2008 R2(Server Core는 SP1 이상에서 지원됨), Windows Server 2003 SP2

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

이 형식은 스레드로부터 안전합니다.

날짜

변경 내용

이유

2010년 12월

설명 부분에서 리소스 관리자는 리소스 파일로만 작동한다고 설명되었습니다.

고객 의견

표시: