将资源文件编译到库时出现问题

时间:2009-03-24 08:41:58

标签: asp.net globalization resgen al.exe

我有一个内置于asp.net的Web应用程序,它使用资源文件来支持多种语言。我遇到的问题是我只能在Visual Studio中添加一个新的语言文件,我必须重建整个应用程序才能包含新语言。在搜索网络后,我发现资源文件的编译可以在.net编译器中完成。我使用了以下命令:

resgen.exe / compile langfile.en.resx

al.exe /out:en\App_GlobalResources.resources.dll / culture:en / embedresource:langfile .en.resources

该文件被复制到网站的文件夹中但不起作用。我的意思是,当我从网页中选择新语言时,字符串将从默认资源文件中加载。如果我在VS中创建资源文件,它可以正常工作。我检查了两个dll文件的大小,由VS生成的文件和我自己编译的文件,并且它们具有相同的大小,但编译的文件不起作用。我只能想,也许我不得不在上面的命令中使用其他一些参数,但我真的不知道。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您可以通过编写自己的表达式构建器而不是使用内置资源版本来获取所需内容,并从数据库或XML文件中提取信息。基本上你编写自己的继承自System.Web.Compilation.ExpressionBuilder的类,然后在Web.config中注册它,如下所示:

<compilation>
  <expressionBuilders>
    <add expressionPrefix="CustomResources" type="CustomResourcesExpressionBuilder"/>
  </expressionBuilders>
</compilation>

然后您可以像普通资源一样引用它:

<%$ CustomResources:Section, Key %>

您可以在herehere找到一些文章。