다음을 통해 공유


리소스 추가 및 편집(Visual C#)

업데이트: 2007년 11월

Visual C# 응용 프로그램에는 대개 소스 코드가 아닌 데이터가 포함됩니다. 이러한 데이터를 프로젝트 리소스라고 하며 여기에는 이진 데이터, 텍스트 파일, 오디오 또는 비디오 파일, 문자열 테이블, 아이콘, 이미지, XML 파일 및 응용 프로그램에 필요한 임의의 다른 데이터 형식이 포함될 수 있습니다. 프로젝트 리소스 데이터는 .resx 파일(기본적으로는 Resources.resx)에 XML 형식으로 저장됩니다. 이 파일은 솔루션 탐색기에서 열 수 있습니다. 프로젝트 리소스에 대한 자세한 내용은 리소스 파일에 대한 작업을 참조하십시오.

프로젝트에 리소스 추가

솔루션 탐색기에서 프로젝트 아래의 속성 노드를 마우스 오른쪽 단추로 클릭하고 열기를 클릭한 다음 프로젝트 디자이너의 리소스 페이지에 있는 리소스 추가 단추를 클릭하여 프로젝트에 리소스를 추가할 수 있습니다.

리소스는 외부 파일인 링크된 리소스 또는 .resx 파일에 직접 포함되는 포함 리소스로 프로젝트에 추가할 수 있습니다.

  • 링크된 리소스를 추가하면 프로젝트 리소스 정보를 저장하는 .resx 파일에 디스크 상에서 리소스 파일의 상대 경로만 포함됩니다. 이미지, 비디오 또는 기타 복잡한 파일을 링크된 리소스로 추가하면 리소스 디자이너에서 해당 파일 형식과 연결한 기본 편집기를 사용하여 이들 파일을 편집할 수 있습니다.

  • 포함 리소스를 추가하면 데이터가 프로젝트의 리소스 파일(.resx)에 직접 저장됩니다. 문자열은 포함 리소스로만 저장할 수 있습니다.

자세한 내용은 링크된 리소스 및 포함 리소스.Resx 파일 형식의 리소스를 참조하십시오.

리소스 편집

리소스 디자이너를 사용하면 각 리소스를 편집하기 위한 기본 응용 프로그램을 연결하여 개발 과정에서 프로젝트 리소스를 추가하고 수정할 수 있습니다. 리소스 디자이너에 액세스하려면 솔루션 탐색기에서 속성을 마우스 오른쪽 단추로 클릭하고 열기를 클릭한 다음 프로젝트 디자이너에서 리소스 탭을 클릭합니다. 자세한 내용은 프로젝트 디자이너, 리소스 페이지를 참조하십시오. 다음 그림에는 리소스 디자이너 메뉴 옵션이 나와 있습니다.

리소스 디자이너 메뉴 항목

포함 리소스를 편집하려면 .resx 파일에서 직접 작업하여 개별 문자 또는 바이트를 조작해야 합니다. 따라서 개발 도중 복잡한 파일 형식은 링크된 리소스로 저장하는 것이 더 편리합니다. 바이너리 편집기를 사용하면 .resx 파일을 비롯한 리소스 파일을 16진수 또는 ASCII 형식으로 이진 수준에서 편집할 수 있습니다. 이미지 편집기를 사용하면 링크된 리소스로 저장된 .jpeg와 GIF 파일 및 아이콘과 커서를 편집할 수 있습니다. 다른 응용 프로그램을 이들 파일 형식의 편집기로 선택할 수도 있습니다. 자세한 내용은 리소스 편집기에서 리소스 보기 및 편집을 참조하십시오.

어셈블리에 리소스 컴파일

응용 프로그램을 빌드할 때 Visual Studio에서는 응용 프로그램 리소스를 Resources라는 내부 클래스로 변환하기 위한 resgen.exe 도구를 호출합니다. 이 클래스는 솔루션 탐색기에서 Resources.resx 파일 아래에 있는 Resources.Designer.cs 파일에 포함되어 있습니다. Resources 클래스는 런타임에 강력한 형식의 리소스를 제공하기 위해 모든 프로젝트 리소스를 읽기 전용인 정적 get 속성으로 캡슐화합니다. Visual C# IDE에서 빌드하면 .resx 파일에 포함된 리소스와 링크된 파일을 모두 포함하는 캡슐화된 리소스 데이터가 모두 응용 프로그램 어셈블리(.exe 또는 .dll 파일)에 직접 컴파일됩니다. 즉, Visual C# IDE에서는 항상 /resource 컴파일러 옵션을 사용합니다. 명령줄에서 빌드하는 경우 /linkresource 컴파일러 옵션을 지정하여 리소스를 주 응용 프로그램 어셈블리가 아닌 별도 파일로 배포할 수 있습니다. 이러한 고급 시나리오는 매우 드문 경우에만 필요합니다. 리소스를 주 응용 프로그램 어셈블리와 별도로 배포하는 보다 일반적인 시나리오는 아래에서 설명하는 것처럼 위성 어셈블리를 사용하는 것입니다.

런타임에 리소스 액세스

런타임에 리소스에 액세스하려면 다른 클래스 멤버의 경우와 마찬가지로 해당 리소스를 참조하기만 하면 됩니다. 다음 예제에서는 Image01이라는 비트맵 리소스를 검색하는 방법을 보여 줍니다. Resources 클래스는 <projectName>.Properties라는 네임스페이스에 있으므로 각 리소스에 대해 정규화된 이름을 사용하거나 Resources 클래스에 액세스할 소스 파일에 적절한 using 지시문을 추가해야 합니다.

System.Drawing.Bitmap bitmap1 = myProject.Properties.Resources.Image01;

내부적으로 get 속성은 ResourceManager 클래스를 사용하여 이 개체의 새 인스턴스를 만듭니다.

자세한 내용은 응용 프로그램의 리소스리소스 파일 생성기(Resgen.exe)를 참조하십시오.

위성 어셈블리의 리소스

여러 언어로 지역화(번역)할 응용 프로그램을 만드는 경우 각 문화권별 문자열 집합을 고유한 자체 위성 어셈블리에 리소스로 저장할 수 있습니다. 응용 프로그램을 배포할 때 주 응용 프로그램 어셈블리와 함께 적절한 위성 어셈블리를 제공할 수 있습니다. 그런 다음 주 응용 프로그램 어셈블리를 다시 컴파일하지 않고 다른 위성 어셈블리를 추가하거나 기존의 위성 어셈블리를 수정할 수 있습니다. 자세한 내용은 위성 어셈블리 만들기특정 문화권의 리소스 찾기 및 사용을 참조하십시오.

참고 항목

개념

프로젝트 디자이너 소개

기타 리소스

Visual C#

Visual C# 시작

공용 언어 런타임의 어셈블리

응용 프로그램 전역화 및 지역화