2009-09-22 3 views
11

내가 사용하여 내 .NET 웹 사이트에 RESX 파일을로드하려고 파일의 .resx하지 .resources를로드하려고 :는 ResourceManager에는

ResourceManager rm = new ResourceManager("Project.Resource", Assembly.GetExecutingAssembly()); 

Resource.resx 파일은 폴더을 App_LocalResources에 있으며로 설정되어 빌드시 어셈블리에 임베드됩니다.

내가 사용 RESX 파일에 액세스하려고 할 때 :

rm.GetString("key"); 또는

rm.GetString("key", culture); 내가 오류 메시지가 :

리소스를 찾을 수 없습니다 적절한, 지정된 문화 또는 중립적 인 문화. 확인 "Project.Resource.resources"이 올바르게 서명 내장 또는 컴파일 타임에 조립 "프로젝트"에 링크 또는 가 필요한 모든 위성 어셈블리를로드 할 수있는 것을 완전히 되었다합니다.

여기에 무슨 일이 벌어지고 있는지에 대한 아이디어가 있습니까?

+0

디자이너 파일도 생성되지 않았습니까? –

답변

3

ResourceManager를 사용하는 방식이 잘못되었다고 생각합니다. 여기를 참조하십시오. post.

Visual Studio 명령 프롬프트를 열 때 & resgen.exe를 실행하면 리소스 파일을 한 형식에서 다른 형식 (즉, resx에서 리소스)으로 변환하는 데 사용됩니다. 내 생각에 파일을 resx &의 리소스로 변환 한 다음 resourceManager를 사용하여로드해야합니다.

+1

올바른 트랙에 나를 넣어 주셔서 감사 ... 나는 ResourceManager를 사용해서는 안됩니다 내 페이지에서 <% $ Resources : filename, key %> 구문을 사용하여 끝났습니다 –

1

.resx 확장자를 명시 적으로 추가하십시오.

또한 자동 생성 클래스를 사용하고 프로젝트에 적합한 경우 해당 속성을 사용할 수 있습니다.

+0

.resx를 "Project.Resource"에 추가하면 Project.Resource.resx.resources 파일과 동일한 오류가 발생합니다. –

+0

죄송합니다. 귀하의 .resx가 App_LocalResources에 있습니다. 내 게시물의 아무도 적용되지 않습니다 ... –

3

어떤 .NET Framework 버전을 사용하고 있는지 잘 모르겠습니다.

ResourceManager를 어떻게 사용하게 만드는지 시도해보십시오.

ResourceManager rm = 
    new ResourceManager("Project.Resource", 
         System.Reflection.Assembly.Load("App_LocalResources")); 

그래야합니다.

이것은 또한 콘크리트 창고 관리자의 자동 생성 .designer.cs 클래스의 정적 속성으로 표시됩니다.

13

는 네임 스페이스를

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly()); 

을 지정할 필요는 ResourceManager로 된 .resx로드하려면 또는 VS는 ResxName.Designer를 생성 한 후 액세스 수정 내부, 내부 또는 공용에 리소스 편집기를 관리 설정하면 당신은 무료로 ResourceManager에를 얻을 수 있습니다.CS

var rm = ResxName.ResourceManager; 
+1

+ Designer 코드를 통해 리소스에 액세스하는 방법은 1을 참조하십시오. – Boggin

4

독서 자원의 놀라 울 정도로 간단한 방법은 문자열이있다 :

ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey") 

은 "점 표기법"을 사용할 수없는 경우 리소스 키가있을 때, 예를 들어 (키에 의해 자원을 읽기위한 깨끗하고 우아한 해결책이다 데이터베이스에 유지됨).