【问题标题】:Problem compiling resource file to library将资源文件编译到库时出现问题
【发布时间】:2009-03-24 08:41:57
【问题描述】:

我有一个内置在 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生成的,一个是我自己编译的,大小一样,但是编译的一个不行。我只能认为也许我必须在上面的命令中使用一些其他参数,但我真的不知道。

非常感谢任何帮助。

【问题讨论】:

  • 必须将资源编译到程序集中吗?

标签: asp.net globalization resgen al.exe


【解决方案1】:

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

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

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

<%$ CustomResources:Section, Key %>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2012-01-06
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多