.NET 에서 자원 파일 을 삽입 하고 사용 하 는 방법 을 읽 습 니 다.
다음은 각각 이 두 가지 방법 을 상술 한다.
1.GetManifestResourceStream 을 사용 하여 끼 워 넣 은 자원 을 읽 습 니 다.
1.자원 파일 추가
프로그램 집합 에 끼 워 넣 을 자원 파일 을 항목 에 직접 추가 하면 프로젝트 의 루트 디 렉 터 리 에 추가 할 수 있 고 프로젝트 의 모든 디 렉 터 리 에 추가 할 수 있 습 니 다.
2.자원 파일 의"BuildAction"속성 설정
자원 파일 에 삽 입 된"BuildAction"속성 을"Embedded Resource"로 설정 합 니 다.
3.코드 에 삽 입 된 자원 사용
//
Type type = MethodBase.GetCurrentMethod().DeclaringType;
string _namespace = type.Namespace;
// Assembly
Assembly _assembly = Assembly.GetExecutingAssembly();
//
string resourceName = _namespace + ".directory.BitmapManifest.bmp";
// Assembly Stream
Stream stream = _assembly.GetManifestResourceStream(resourceName);
Image myImage = Image.FromStream(stream);
자원 이름 구성 규칙 주의:프로젝트 의 기본 이름 공간 입 니 다.자원 이 프로젝트 에 있 는 디 렉 터 리 입 니 다.자원 파일 이름
위 코드 에 있 는 BitmapManifest.bmp 비트 맵 은 프로젝트 의 directory 디 렉 터 리 아래 에 있 습 니 다.자원 파일 이 프로젝트 루트 디 렉 터 리 에 직접 있 으 면 프로젝트 의 기본 이름 공간 입 니 다.자원 파일 이름
xml 자원 의 예 를 하나 더 드 리 겠 습 니 다:
//
Type type = MethodBase.GetCurrentMethod().DeclaringType;
string _namespace = type.Namespace;
// Assembly
Assembly _assembly = Assembly.GetExecutingAssembly();
//
string resourceName = _namespace + ".XMLFileTest.xml";
// Assembly Stream
Stream stream = _assembly.GetManifestResourceStream(resourceName);
XmlDocument xmlDoc = null;
xmlDoc = new XmlDocument();
xmlDoc.Load(stream);
2.사용.resx 자원 파일 삽입 자원1.새 자원 파일
프로젝트 에 자원 파일 을 새로 만 듭 니 다.자원 파일 은.resx 를 접미사 로 하고 자원 파일 과 같은 이름 의 Designer.cs 파일 도 새로 만 듭 니 다.
사실 자원 파일 의 가장 큰 용 도 는 다 중 언어 버 전의 소프트웨어 를 만 들 때 서로 다른 언어의 자원 을 저장 하 는 것 입 니 다.예 를 들 어 서로 다른 언어의 메뉴 텍스트 는 서로 다른 언어의 문자열 을 같은 자원 유형의 서로 다른 자원 패키지 에 넣 을 수 있 습 니 다.프로그램 이 실 행 될 때 시스템 의 culture 에 따라 서로 다른 가방 을 선택 하여 서로 다른 언어의 문자열 을 표시 할 수 있 습 니 다.
자원 파일 을 새로 만 들 면 자원 파일 에 자원 파일 을 추가 할 수 있 습 니 다.
그림 1.resx 자원 파일 에 끼 워 넣 을 수 있 는 자원 형식
자원 에 문자열,비트 맵,아이콘,오디 오,파일 등의 자원 을 추가 할 수 있 습 니 다.
추 가 된 자원 은 프로젝트 의 Resources 폴 더 에 저 장 됩 니 다.
2.자원 파일 의"BuildAction"속성 설정
Resources 폴 더 에 있 는 모든 자원 파일 의'BuildAction'속성 을'Embedded Resource'로 설정 합 니 다.
3.자원 존재 방식
.resx 자원 파일 관리 자원 은 두 가지 존재 형식 으로 사용 할 수 있 습 니 다.하 나 는 일반적인 파일 형식 으로 Resources 폴 더 에 존재 하고 다른 하 나 는 Base 64 인 코딩 을 거 쳐 resx 자원 파일 에 삽 입 됩 니 다.
그림 2.resx 자원 파일 에 자원 존재 방식
.resx 자원 파일 을 열 고 자원 을 선택 하 십시오.속성 에서 Persistence 속성 은 자원 의 존재 형 태 를 결정 합 니 다.자원 의 두 가지 존재 형식 은 코드 에서 호출 되 는 것 이 모두 같다.
4.코드 에 삽 입 된 자원 사용
//
Type type = MethodBase.GetCurrentMethod().DeclaringType;
string _namespace = type.Namespace;
//
Assembly currentAssembly = Assembly.GetExecutingAssembly();
//
string resourceRootName = _namespace + ".ResourceTest";
//
ResourceManager resourceManager = new ResourceManager(resourceRootName, currentAssembly);
//
Icon myIcon = (Icon)resourceManager.GetObject("IconTest");
자원 의 루트 이름 규칙 에 주의 하 십시오:자원 의 루트 이름 은 이 자원 파일 류 의 전체 이름 입 니 다.
.resx 자원 파일 에 해당 하 는 Designer.cs 파일 을 열 면 자원 류 의 전체 이름:이름 공간,자원 클래스 이름 을 볼 수 있 습 니 다.
자원 이름 은'resx 자원 파일'에 있 는 자원 의 이름 입 니 다.
.resx 자원 파일 을 열 면 각 자원 의 이름 을 볼 수 있 습 니 다.위의 그림 에서 아이콘 파일 Icontest.ico 의 이름 은 Icontest 입 니 다.
"문자열"자원 을 검색 하려 면 GetString 방법 을 사용 하 십시오.
다른 유형의 자원 을 검색 하려 면 GetObject 방법 을 사용 하고 얻 은 자원 을 해당 하 는 형식 으로 변환 하 십시오.
5.다 중 언어의 자원 응용
//
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
//CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture;
Icon myIcon = (Icon)resourceManager.GetObject("IconText", ci);
이상 은 저희 가 여러분 을 위해 정리 한 두 가지 삽입 과 자원 파일 을 사용 하 는 방법 입 니 다.저 는 두 번 째 를 사용 하 는 편 입 니 다.여러분 을 도 울 수 있 기 를 바 랍 니 다.