2012-02-06 3 views
0

.resx에서 문자열에 직접 액세스 할 수 있습니까?.resx 파일 읽기 VB.NET SharpDevelop?

나는 여러 프로젝트가 있고, .resx는 SharpDevelop 템플릿 "Misc >> Empty resource file"을 사용하여 만들어졌다.

같은 내가 온라인으로 대부분의 방법을 시도했습니다

:

... = new ResourceManager ("ProjectEtc.resxFileName", 
      Assembly.GetExecutingAssembly) 

하지만 같은 오류가 나타날 수에 상관없이 내가 할 것으로 보인다 무엇

Could not find any resources appropriate for the specified culture or 
neutral culture. Make sure "ProjectEtc.resxFileName.resources" was 
correctly embedded or linked into assembly "Project calling" at compile time... 

합니다.

내 .resx 파일도 .resource 파일로 변환해야 할 필요가있는 것처럼 보입니다.

#develop 템플리트를 사용하여 일부 단계에서 누락 되었습니까?

잠깐 ... .NET에서 상수 문자열을 저장하는 가장 좋은 방법일까요?

감사합니다, 의 Dane 된 .resx 파일이 빌드 작업 EmbeddedResource- 세트가

답변

0

확인합니다. SharpDevelop는 빈 리소스 파일 템플릿을 사용하여 새 파일을 만들 때 기본적으로 그렇게해야하지만 확인해 볼 가치가 있습니다.

이제 프로젝트의 루트 네임 스페이스와 파일 확장명이없는 resx 파일 이름을 ResourceManager 생성자에 전달해야합니다.

그래서 SharpDevelop에서 TestResource라는 새 프로젝트를 만들면 내 루트 네임 스페이스가 TestResource가됩니다. 그런 다음 Foo.resx라는 리소스 파일을 프로젝트에 추가하면됩니다.

Dim resourceManager As New ResourceManager("TestResource.Foo", Assembly.GetExecutingAssembly) 
Dim result = resourceManager.GetString("MyString") 

당신이 당신의 용 애플리케이션 된 .resx 파일을 컴파일 가 .resources 파일로 컴파일하고 프로젝트에 포함됩니다

: 그런 다음 다음 코드로 해당 문자열 값에 액세스 할 수 있습니다 "MyString에"라는 문자열을 추가 . ILSpy과 같은 도구를 사용하면이 포함 된 리소스와 해당 리소스가 무엇인지 확인할 수 있습니다.

일반적으로 .NET에서 다국어 응용 프로그램을 수행하는 방식은 .resx 파일을 사용하므로 문자열을 저장하는 데이 파일을 사용하면 문제가 없습니다.

+0

ILSpy를 사용하면 실제로 리소스 파일을 볼 수 있습니다. 그것은 Resources라는 폴더 안에있는 내 프로젝트에 있으며 실제로 "[Project namespace] .Name.resources"라는 이름을 가지고 있습니다. 나는 모든 종류의 '경로 이름'을 다시 간단한 경로에서 복잡한 경로로 참조하려고했지만 동일한 문화 나 중립 문화에 적합한 자원을 찾을 수 없었습니다. 모든 것이 포함됩니다. 나는 머리를 긁적이다. – Danedo

+0

프로젝트의 폴더에 .resx 파일이 있으면 리소스 파일이 포함될 때 리소스 파일의 이름에 영향을 미치지 않는 것으로 보입니다. –