如何在.NET MVC站点中嵌入并从Satellite Assembly获取资源以用于多个语言环境

时间:2014-05-23 17:34:52

标签: .net-assembly satellite-assembly

第1步:好的,我知道我已经阅读了网上的每一页,所以我终于崩溃了,最后来到了SOF。

这是我的资源文件代码:

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

很明显,现在我创建了我的errors.resources文件,其中包含名为String1的字符串资源,其中包含“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步可能做错了吗?或者也许我在之前的步骤中做错了什么?

1 个答案:

答案 0 :(得分:0)

您的资源文件相对于程序集位于何处?您应该创建一个目录,其中包含资源文件所用语言环境的名称(在您的情况下为en-US),然后将附属程序集放在那里。该目录应与原始程序集位于同一目录中。