18

为了GetGlobalResourceObject()在 Visual Studio 2008 中使用,我必须将一个 .resx 文件复制到 Visual Studio 的 App_GlobalResources 文件夹中。应用程序预编译后,资源文件被编译成相应的附属程序集,并按\bin\区域性名称部署在文件夹下。这一切都很好。

但是,在预编译应用程序后,我无法添加新的附属程序集。我所做的是:

  1. 创建了一个卫星程序集:

    resgen resources.applicationresources.es-ES.resx resources.applicationresources.es-ES.resources al /t:lib /culture:es-ES /embed:resources.applicationresources.es-ES.resources /out:App_GlobalResources.resources.dll

  2. 创建文件夹\bin\es-ES\并在那里部署 .dll 文件。

不幸的是,新添加的卫星程序集没有被 识别GetGlobalResourceObject(),它回退到默认(英语)资源。资源文件似乎没有任何问题,因为如果我将相同的 .resx 文件复制到App_GlobalResources然后编译应用程序,一切正常。

我错过了什么?顺便说一句,我的项目类型是网站而不是 Web 应用程序项目。

4

2 回答 2

0

(来自@ksa 的评论)

可能出错的一件事是 resgen 生成的 DLL 中的命名空间路径不正确,您可以使用 ILDASM 或 Reflector 来比较工作 DLL 和生成的不工作 DLL 中的命名空间。然后,您可以更改 resgen 命令行以使用正确的命名空间生成。

于 2011-06-30T07:53:42.600 回答
0

尝试连接 AppDomain.CurrentDomain 中的 AssemblyResolve 事件,看看它是否真的在寻找程序集。如果它确实找到了它,您需要做的就是保留一个动态加载的程序集及其路径的列表。

关于 AssemblyResolve 的注释,如果您没有程序集,则返回 null。这是默认行为。

于 2011-08-13T22:06:03.650 回答