代码之家  ›  专栏  ›  技术社区  ›  jitbit

如何在运行的应用程序中为.Net DLL替换资源(.resx)文件?

  •  1
  • jitbit  · 技术社区  · 15 年前

    我有一个ASP.Net web应用程序引用的.Net(3.5)DLL。

    DLL中的一个类有一个.resx文件,其中包含一个错误消息字符串,该字符串最终由调用的.aspx页面显示。

    类别: ClassName.cs
    .resx: ClassNameResources.resx

    它读取.resx字符串(作为嵌入式资源在DLL中编译)时不会出现问题。

    我遇到的问题是试图替换已部署web应用程序中的错误消息字符串-我实际上如何做?

    你能给我指一下导游吗到目前为止,我发现最好的是 this one ,表示使用 regen.exe al.exe ,但结果是 .resources 文件未被使用,因为错误消息未更改。在这个阶段,我不尝试为任何区域性进行本地化,而是尝试修改为默认区域性返回的字符串。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Thorsten Dittmar    15 年前

    如拉丝V。Karlsen在上面说过,资源文件不是您想要的东西。基本上,类和资源的字节码被编译成一个程序集,最终是一个单元。

    C#允许您通过Properties.resources…轻松使用资源文件中包含的资源。。。。到现在为止,一直都还不错。

    在本地化应用程序时,您将获得另一个包含本地化资源的程序集(DLL)。内部机制使用该DLL来检索资源数据,而不是标准程序集。

    资源实际上是存储的 在内部 程序集(使用Reflector了解我的意思)使得不可能将另一个资源文件放入同一文件夹中,以便使用新资源。

    资源文件是 与配置文件类似,这些文件被复制到部署文件夹(或其他位置),然后作为外部文件加载。

    如果您想像您描述的那样动态地替换资源,那么必须使用您自己的资源加载机制。我非常肯定,您不能使用内置的资源机制来实现这一点。