2014-09-10 6 views
1

런타임에 액세스해야하는 파일이 있습니다. 프로젝트에 포함 시켜서 임베디드 리소스로 설정했습니다 (실제로 소스 파일이므로 확장 프로그램을 변경했습니다. .cs.txt 그것을 컴파일하려고 VS 주위에 얻을 수 있습니다. 그건 중요하지 않아야하지만, 어쨌든 경우에 그것을 언급 해요). 파일을 가져올 때임베디드 리소스 파일이 런타임에 존재하지 않습니다 .Net 4

var assembly = Assembly.GetExecutingAssembly(); 
Stream stream = assembly.GetManifestResourceStream(resourceName); 

나는 null을 얻습니다. Namespace.Folder.Filename 표기법을 사용하고 있는지 확인했지만 도움이되지 않았습니다. 전화 할 때 파일이 실제로 존재하지 않는 것 같습니다.

assembly.GetManifestResourceNames(); 

나는 빈 문자열 배열을 얻습니다. 어떤 아이디어가 그럴 수 있습니까?

+0

프로젝트 파일에 파일이 포함 된 리소스로 표시되어 있습니까? –

+0

예. 또한 어셈블리를 추가 한 후에 어셈블리가 다시 빌드되었는지 확인했습니다. – Shaggydog

+0

리소스 파일은 "리소스"라는 프로젝트 폴더에 있어야하며 속성 창에서 포함 된 리소스로 표시되어야합니다. Visual Studio에서 Resources에서 기본 폴더로 복사 한 것이 프로젝트에 포함되어있는 경우주의하십시오. 그리고 GetManifestResourceNames() 또는 GetManifestResourceStream() 호출에서 사용되는 어셈블리는 리소스가 포함 된 어셈블리 여야하며 Assembly.GetExecutingAssembly()에서 반환 한 어셈블리 일 필요는 없습니다. – RenniePet

답변

0

그래서 저는 VS 리소스 관리자를 사용하여이 문제를 해결했습니다. 지금은이 같은 파일을 직접 액세스 할 수 있습니다 : 그것은뿐만 아니라 많은 청소기,하지만 안전뿐만 아니라 보인다

MyNamespace.Properties.Resources.MyFile 

나는, 누군가에게이 방법을 권하고 싶습니다. Hans Passant에게 조언을 해주셔서 감사드립니다.