为了在Visual Studio2008中使用GetGlobalResourceObject()
,我必须将一个.resx文件复制到Visual Studio的App_GlobalResources文件夹中。预编译应用程序后,资源文件将编译到相应的附属程序集中,并按区域性名称部署在\bin\
文件夹下。这一切都运行得很好。
但是,在预编译应用程序后,我无法添加新的附属程序集。我所做的是:
resgen resources.applicationresources.es-ES.resx resources.applicationresources.es-ES.resources al /embed:resources.applicationresources.es-ES.resources /out:App_GlobalResources.resources.dll
\bin\es-ES\
并在那里部署.dll文件。遗憾的是,GetGlobalResourceObject()
不能识别新添加的附属程序集,它会退回到默认(英语)资源。资源文件似乎没有任何问题,因为如果我将相同的.resx文件复制到App_GlobalResources
中,然后编译应用程序,一切都会正常工作。
我遗漏了什么?顺便说一下,我的项目类型是网站,而不是web应用程序项目。
发布于 2011-06-30 15:53:43
(来自@ksa的评论)
可能会出错的一件事是由resgen生成的DLL中的名称空间路径不正确,您可以使用ILDASM或Reflector来比较工作DLL中的名称空间和生成的不工作DLL中的名称空间。然后,您可以更改resgen命令行以使用正确的名称空间生成。
发布于 2011-08-14 06:06:04
尝试连接到AppDomain.CurrentDomain中的AssemblyResolve事件,看看它是否实际在查找程序集。如果它确实在寻找它,您所需要做的就是保留一个动态加载的程序集及其路径的列表。
关于AssemblyResolve需要注意的一点是,如果没有程序集,则返回null。这是默认行为。
https://stackoverflow.com/questions/1747041
复制相似问题