为了在Visual Studio 2008中使用GetGlobalResourceObject()
,我必须将.resx文件复制到Visual Studio的App_GlobalResources文件夹中。在预编译应用程序之后,资源文件将被编译到相应的附属程序集中,并按文化名称部署在\bin\
文件夹下。一切正常。
但是,在预编译应用程序后,我无法添加新的附属程序集。我所做的是:
创建了一个附属程序集:
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
创建了文件夹\bin\es-ES\
并在那里部署了.dll文件。
不幸的是,GetGlobalResourceObject()
无法识别新添加的附属程序集,后者回退到默认(英语)资源。资源文件似乎没有任何问题,因为如果我将相同的.resx文件复制到App_GlobalResources
然后编译应用程序,那么一切正常。
我错过了什么? BTW我的项目类型是网站而不是网络应用项目。
答案 0 :(得分:0)
(来自@ksa的评论)
可能出错的一件事是由resgen生成的DLL中的命名空间路径不正确,您可以使用ILDASM或Reflector来比较工作DLL中的命名空间和生成的不工作DLLS。然后,您可以更改resgen命令行以使用正确的命名空间生成。
答案 1 :(得分:0)
尝试连接到AppDomain.CurrentDomain中的AssemblyResolve事件,看看它是否正在寻找程序集。如果它确实在寻找它,你需要做的就是保留动态加载的程序集及其路径的列表。
关于AssemblyResolve的一个注释,如果你没有程序集,则返回null。这是默认行为。