내 기본 Windows Forms (관리되는 C++) 프로젝트에는 반응 형 다이어그램을 만들기 위해 표시하거나 숨길 수있는 타일로 이미지를 표시하는 클래스가 있습니다. 외부에서 작성된 .resx 파일의 리소스에 액세스
: 나는 내가 모든 이미지는이 응용 프로그램은 C#으로 작성되는 등, 올바른 위치에 얻을 수 있습니다 다음과 같은 코드를 사용하여 이미지 데이터 및 위치를 포함하여 .resx 파일을 기록 별도의 유틸리티 응용 프로그램을 만들어using(ResXResourceWriter resx = new ResXResourceWriter(sfd.FileName)) {
resx.AddResource("Size", canvas.Size);
List<int> IDs = canvas.IDs;
resx.AddResource("IDList", IDs);
resx.AddResource("BackgroundIndex", canvas.BackgroundIndex);
foreach(int id in IDs) {
String positionKey = String.Format("Position.id{0}", id);
String visibilityKey = String.Format("Visibility.id{0}", id);
String imageKey = String.Format("Image.id{0}", id);
resx.AddResource(imageKey, canvas.TileImage(id));
resx.AddResource(positionKey, canvas.TilePosition(id));
resx.AddResource(visibilityKey, canvas.TileVisible(id));
}
}
텍스트 편집기에서 .resx 파일을 열어 올바른 형식이며 예상되는 데이터가 포함되어 있는지 확인할 수 있습니다.
그런 다음 .resx 파일을 기본 응용 프로그램의 프로젝트에 추가합니다. 이제는 내부 자원을 확보하는 방법을 알 수 없습니다. 내가 해봤 코드는 다음과 같습니다
리소스로드 실패 : 런타임시
ResourceManager^image_rm = gcnew ResourceManager( "resx_file_name_without_extension", GetType()->Assembly); ResourceSet^image_rs = image_rm->GetResourceSet( System::Globalization::CultureInfo::CurrentCulture, true, true);
가, 두 번째 줄합니다 (
GetResourceSet
호출) 다음과 같은 메시지 텍스트가있는System.Resources.MissingManifestResourceException
을 던졌습니다 을 찾을 수 없습니다 지정된 문화권 또는 중립 문화에 적합한 자원. 컴파일시 "resx_file_name_without_extension.resources"가 임베디드 또는 "my_assembly"어셈블리에 올바르게 연결되었는지 확인하거나 필요한 모든 위성 어셈블리를로드하고 완전히 서명했는지 확인하십시오.
나는 내 문제가 의심 스럽다 ... 잘 모르겠다. 어쩌면 ResourceManager
생성자에서 올바른 식별자를 사용하지 않는 것일 수 있습니다. 명시 적으로 "Build from Excluded From Build : No"및 "Content : Yes"을 파일 속성에 설정했지만 아무 효과가 없습니다.
외부에서 생성 된 .resx 파일을 프로젝트로 가져 와서 리소스 내에서 가져올 수 있습니까? 나는 그것을 컴파일 할 필요가있다. 매달린 .resx 파일이있는 제품을 배송 할 수 없습니다. 항상 .cpp 파일에 정적 데이터 객체 집합을 만들 수 있지만 .resx 접근 방식은 더 우아한 것처럼 보입니다.