这是我的情景:
我有一个.Net(3.5)DLL被ASP.Net Web应用程序引用。
DLL中的一个类有一个.resx文件,其中包含一个错误消息字符串,最终由调用的.aspx页面显示。
DLL使用多个命名空间,我将.resx文件设置为与调用它的类相同的命名空间,而.resx文件与使用的类具有相同的文件夹位置和文件名,后固定与'资源':即
班级:ClassName.cs
.resx:ClassNameResources.resx
它读取.resx字符串(在DLL中作为嵌入式资源编译)没有问题。
我遇到的问题是尝试替换已部署的Web应用程序中的错误消息字符串 - 我该如何实际执行此操作?
你能指点我吗? - 到目前为止我发现的最好的是this one,它表示使用regen.exe
和al.exe
,但生成的.resources
文件未被使用,因为错误消息没有不要改变。在这个阶段,我不是要尝试本地化任何文化,我正在尝试修改为默认文化返回的字符串。
感谢您提出的任何建议:o)
答案 0 :(得分:3)
正如Lasse V. Karlsen所说,资源文件不适合您想要的东西。基本上,类和资源的字节代码被编译成一个程序集,最后是一个单元。
C#允许您通过Properties.Resources轻松使用资源文件中包含的资源....到目前为止一切顺利。
如果您正在本地化您的应用程序,您将获得另一个包含本地化资源的程序集(DLL)。内部机制使用该DLL来检索资源数据而不是标准程序集。
资源实际存储在 程序集中(使用Reflector查看我的意思)这使得无法将另一个资源文件放入同一文件夹中以供新资源使用。
资源文件不类似于配置文件,它们被复制到部署文件夹(或其他位置),然后作为外部文件加载。
如果您想按照描述动态替换资源,则必须使用自己的资源加载机制。我很确定你不能使用内置的资源机制。