[.net] 지정된 문화 또는 중립 문화에 적합한 자원을 찾을 수 없습니다

두 개의 ASP.NET 웹 프로젝트 (ProjectA 및 ProjectB)가 있습니다. ProjectA의 클래스가 Blah.resx 리소스 파일을 사용하는 ProjectB 클래스를 인스턴스화하는 경우이 오류가 발생합니다.

mscorlib.dll에서 ‘System.Resources.MissingManifestResourceException’유형의 예외가 발생했지만 사용자 코드에서 처리되지 않았습니다.

지정된 문화 또는 중립 문화에 적합한 자원을 찾을 수 없습니다. 컴파일 할 때 “Resources.Blah.resources”가 어셈블리 “App_GlobalResources.sn_flri6″에 올바르게 임베드되거나 링크되었는지 또는 필요한 모든 위성 어셈블리가로드 가능하고 완전히 서명되었는지 확인하십시오.

이 원인은 무엇입니까?

Microsoft 사이트에이 http://support.microsoft.com/kb/318603 에 관한 기사가 있습니다 .

이 문제를 해결하려면 다른 클래스 정의를 모두 이동하여 양식의 클래스 정의 뒤에 표시되도록하십시오.

이것은 Windows Forms 프로젝트를위한 솔루션이며, 이것이 웹 프로젝트에도 적용되는지 확실하지 않습니다.



답변

WPF 프로젝트에서 이와 동일한 예외가 발생했습니다. 문제는 우리가 최근에 다른 네임 스페이스 (이동한다는 어셈블리 내에서 발생 ProblemAssembly.Support하는 ProblemAssembly.Controls). 어셈블리에 존재하는 두 번째 리소스 파일에서 리소스에 액세스하려고 할 때 예외가 발생했습니다.

추가 리소스 파일이 이전 네임 스페이스 이름에서 새 네임 스페이스 이름으로 참조를 올바르게 이동하지 않았 음을 나타냅니다.

리소스 파일의 designer.cs에는 ResourceManager를 가져 오기위한 정적 속성이 있습니다. 해당 getter 내에서 문자열은 여전히 ​​이전 네임 스페이스를 참조하고있었습니다. 새로운 네임 스페이스로 수정하면 문제가 해결되었습니다.

global::System.Resources.ResourceManager temp = 
     new global::System.Resources.ResourceManager(
          "ProblemAssembly.Support.Properties.Stuff", typeof(Stuff).Assembly);

이어야했다 :

global::System.Resources.ResourceManager temp = 
     new global::System.Resources.ResourceManager(
          "ProblemAssembly.Controls.Properties.Stuff", typeof(Stuff).Assembly);

이것이 다음 사람에게 도움이되기를 바랍니다.


답변

나는 다음과 같은 문제를 해결했다.

  1. ResourceFile을 마우스 오른쪽 버튼으로 클릭하십시오.
  2. “빌드 조치”특성 컴파일을 “내장 자원”으로 변경하십시오.
  3. 그런 다음 빌드하고 실행하십시오.

완벽하게 작동합니다.


답변

한 C # 프로젝트의 resource.resx 파일을 다른 C # 프로젝트와 공유하려고 할 때이 문제가 발생했습니다. Form 클래스를 파일의 시작 부분으로 옮기는 것에 대한 제안은 적절하지 않았습니다. 이것이 내가 해결 한 방법입니다. 기본적으로 두 번째 프로젝트에서 첫 번째 프로젝트로의 링크를 사용한 다음 resource.designer.cs파일을 재생성 할 수 있습니다.

  1. 두 번째 프로젝트 Properties/Resources.resx파일 삭제
  2. 첫 번째 프로젝트의 Properties/Resources.resx파일 두 번째 프로젝트 의 속성 폴더에 링크로 추가하십시오 . 프로젝트의 루트 레벨에 추가하지 마십시오.
  3. 첫 번째 프로젝트를 추가 하지 마십시오Properties/Resources.designer.cs !
  4. 두 번째 프로젝트의 속성 에서 CustomTool로 Resources.resx추가 ResXFileCodeGenerator하십시오.
  5. 을 마우스 오른쪽 버튼으로 클릭 Resources.resx하고 “사용자 정의 도구 실행”을 선택하십시오. 새 designer.cs 파일이 생성됩니다.

참고 : resource.designer.cs 파일은 자동 생성되므로 편집하지 마십시오.


답변

필자의 경우 일련의 잘못 생각한 전역 텍스트 대체가 실수로 리소스 디자이너 cs 파일에서이 줄을 변경했습니다.

여기에 이미지 설명을 입력하십시오

해당 인수의 네임 스페이스가 더 이상 클래스의 네임 스페이스와 일치하지 않으므로 런타임시 애플리케이션이 혼란스러워졌습니다.

디자이너의 네임 스페이스가 해당 줄의 문자열 인수와 일치하는지 확인하십시오.


답변

*.resх마이그레이션에서 제외 되었기 때문에 발생 합니다.

  • ResourceFile을 마우스 오른쪽 버튼으로 클릭하십시오.
  • “프로젝트에 포함”메뉴 항목을 클릭하십시오

답변

프로젝트에서 resx 파일을 제외하고 designer.cs 파일을 삭제 한 다음 네임 스페이스 리팩터링 (CFinck의 답변에 따라)에 따라 종종 이러한 종류의 문제를 해결했습니다.


답변

아무도이 솔루션을 언급하지 않은 것 같습니다. 분명히-하지만 잠시 동안 저를 넘어 뜨 렸습니다 …

새 리소스 파일의 기본 액세스 수정자는 Internal(또는 FriendVB.Net)입니다.Public

(resx 디자이너에는 액세스 수정 자 상단에 드롭 다운이 있습니다)