2014-05-23 1 views
0

1 단계 : 좋아요, 알기로 나는 인터넷에있는 모든 페이지를 읽었으므로 결국 마침내 SOF에서 종료되었습니다. 여기 위성 어셈블리에서 소스를 임베드하고 가져 오는 방법 여러 로케일의 .NET MVC 사이트

내 리소스 파일의 코드입니다 : 지금은, 내 errors.resources 파일 문자열 1이라는 문자열 리소스/w를 만든, 그래서 분명히

using (ResourceWriter rw = new ResourceWriter(@"C:\pathto\errors.resources")) 
{ 
    rw.AddResource("String1", "en-US"); 
} 

w 거기에 "EN-US"값/.

2 단계 : 좋아

c:\>al /t:lib /culture:en-US /embed:C:\pathto\errors.resources /out:C:\pathto\bin\en-US\MyWeb.Ext.errors.resources.dll 

... 너무 멋져요 : 그럼 그 후 난 그저 내 위성 어셈블리를 만듭니다.

3 단계 : 그래서 지금 내 프로젝트 :

Thread.CurrentThread.CurrentCulture = newCulture; 
Thread.CurrentThread.CurrentUICulture = newCulture; 
ResourceManager rm = new ResourceManager("MyWeb.Ext.errors", this.GetType().Assembly); 
ViewData["String1"] = rm.GetString("String1"); 

하지만 내가 상관없이 ... 나는 어셈블리에 해당 문자열 리소스에 액세스 할 수 없습니다. 내 errors.resources 파일을 프로젝트에 포함 시켜서 그렇게 할 수는 있지만이 어셈블리를 다른 프로젝트에도 사용할 수 있도록이 어셈블리를 사용해야합니다!

누군가 제가 3 단계에서 잘못했을 수도있는 것을 말해 줄 수 있습니까 ?? 아니면 이전 단계에서 뭔가 잘못 했습니까 ??

답변

0

어셈블리와 관련된 리소스 파일의 위치는 어디입니까? 리소스 파일이있는 로케일의 이름을 포함하는 디렉토리를 작성한 다음 (예 : en-US), 거기에 위성 어셈블리를 배치해야합니다. 이 디렉토리는 원본 어셈블리와 동일한 디렉토리에 있어야합니다.

+0

아이디는 appdir/en-US에 넣고 appdir/bin/en-US에 넣고 appdir/bin/bin/en-US에 넣습니다. 동일한 디렉토리에서 bin 폴더를 의미합니까? 현재 bin/en-US/MyWeb.Ext.errors.resources.dll에 있습니다. 내 errors.resource 파일은 Satellite 어셈블리와 관련이 없지만 이전에는 같은 bin/en-US 디렉토리에 모두 가지고있었습니다. – user3123818

+0

리소스 DLL은 en-US라는 폴더에 있어야합니다. en-US 폴더는 어셈블리와 동일한 폴더에 있어야합니다. 또 다른 생각 - 당신은'newCulture'가 en-US라는 것을 확인 했습니까? – Andy