2010-06-06 2 views
1

.dll 파일에 이미지를 저장하고이를 내 winform 응용 프로그램에 사용하고 싶습니다. 하지만 임 수없는이 .DLL 내용WinForms의 이미지 리소스

System.IO.Stream stream; 
    System.Reflection.Assembly assembly; 
    Image bitmap; 
    assembly = System.Reflection.Assembly.LoadFrom(Application.ExecutablePath); 
    stream = assembly.GetManifestResourceStream("global::template.Properties.Resources.test.png"); 
    bitmap = Image.FromStream(stream); 
    this.background.titleImage = bitmap; // image box 

답변

2

잘못된 이름을 사용하고 있으며 "global ::"은 매니페스트 리소스 이름에 표시되지 않습니다. 일반적인 이름은 프로젝트.test.png입니다. 리소스를 프로젝트에 추가하고 빌드 작업을 "Embedded Resource"로 설정하면 일반적인 이름이됩니다. 이름을 추측하지 않으려면 Ildasm.exe를 사용하고 매니페스트에서 .mresource를 찾으십시오.

그러나 이름은 Project + Properties의 Resources 탭에 리소스를 추가했음을 나타냅니다. 좋은 생각은 자원의 속성 이름을 자동 생성합니다. 프로젝트를 .Properties.Resources.test로 참조하십시오. GetManifestResourceStream을 사용할 필요없이 Image를 다시 얻을 수 있습니다.

프로젝트 위에 나열된 이름은 프로젝트에 할당 한 기본 네임 스페이스 이름입니다. 프로젝트 + 속성, 응용 프로그램 탭, 기본 네임 스페이스 설정.

2

가능성이 가장 높은 문제는 당신이) (GetManifestResourceStream에서 지정하는 경로가 올바르지 않은 것입니다을로드합니다. 반사판에, 그것으로 포함 된 자원을 가지고

  1. 열기 어셈블리 :

    나는 이러한 문제를 디버깅하기 위해 다음과 같은 도움.

  2. Resources 폴더를 엽니 다.
  3. 리소스 경로 \ 폴더 목록에서 리소스가있는 폴더를 찾습니다.
  4. 리소스를 찾을 수없는 경우 포함 된 리소스로 표시 했습니까?
  5. 리소스 경로는 "리소스 폴더"+ "입니다." + "자원 이름".

"PrismDemo.Properties.Resources.resources.app.ico"