2013-01-18 5 views
0

현재 게임 엔진을 만들고있어 내 라이브러리를 참조하는 클라이언트 어셈블리의 리소스에서 이미지를로드해야합니다. 이 코드를 사용하고 있습니다.클라이언트 어셈블리의 리소스로드

public static Image LoadImageFromResource(string name){ 
    string asmname = Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location).Replace('\\', '.').Replace('/', '.'); 
    MessageBox.Show(asmname); 
    MessageBox.Show(asmname + "." + name.Replace('\\', '.').Replace('/', '.')); 
/*164*/ return (Image)new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream(asmname + "." + name.Replace('\\', '.').Replace('/', '.'))); 
} 

그리고 클라이언트 테스트 GECS_TEST.exe

/*11*/ Image img = Game.LoadImageFromResource("mario_left.png"); 

에서이 전화 드렸습니다 이들은 MessageBox

GECS_TEST의 출력

입니다 6,

GECS_TEST.mario_left.png

그리고 나는이 예외를

System.ArgumentException: Value of 'null' is not valid for 'stream'. 
    at System.Drawing.Bitmap..ctor(Stream stream) 
    at GECS.Core.Game.LoadImageFromResource(String name) in C:\..\Game.cs:line 164 
    at GECS_TEST.Test.Main(String[] args) in c:\..\Test.cs:line 11 

감사

+0

GetManifestResourceStream()이 null 인 것 같습니다. 매니페스트로 프로젝트를 컴파일하고 있습니까? –

+0

나는'default manifest'로 설정했습니다. 나는 리소스를 패키지 관리자로 복사하고 그것을'Embedded Resource'로 빌드 액션으로 선택했습니다. –

+0

그리고 GECS와 GECS_TEXT가 있다면 ... 왜 EntryAssembly가 GECS_TEST를 가리 킵니까? 대신 GetCallingAssembly를 사용해보십시오. –

답변

관련 문제