2009-11-17 37 views
18

为了在Visual Studio 2008中使用GetGlobalResourceObject(),我必须将.resx文件复制到Visual Studio的App_GlobalResources文件夹中。应用程序预编译完成后,资源文件将被编译到相应的附属程序集中,并通过文化名称部署在\bin\文件夹下。这一切工作正常。在预编译的部署网站中添加卫星程序集

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

  1. 创建附属程序集:

    RESGEN resources.applicationresources.es-ES.resx resources.applicationresources.es-ES.resources 人/吨:LIB /文化:es-ES /embed:resources.applicationresources.es-ES.resources /out:App_GlobalResources.resources.dll

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

不幸的是,新增加的卫星组件不是由GetGlobalResourceObject(),这回退到默认的(英文)资源的认可。资源文件似乎没有问题,因为如果我将同一个.resx文件复制到App_GlobalResources然后编译应用程序,那么一切正常。

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

+1

你有没有找到解决这个问题的办法? – splattne 2010-06-01 08:53:57

+1

目前我非常坚持这一点。 – Mig 2011-05-20 10:05:47

+1

我们遇到的问题是,在通过resgen生成附属程序集时,名称空间路径不正确。我们使用ILDASM来渲染生成的卫星DLL,所以我们纠正了它,并部署回了程序集。 – ksa 2011-06-02 08:32:08

回答

0

(由@ksa评论)

有一件事情可以去错是由RESGEN产生的DLL不正确的命名空间路径,可以使用ILDASM或反思的命名空间中工作的DLL和生成的比较不工作DLLS。然后,您可以更改您的resgen命令行以使用正确的命名空间生成。

+0

社区维客,因为我只是重新说明了OP在评论中为其解决了什么问题,以便将此问题从未答复的列表中移除。 – 2011-06-30 07:55:05

0

尝试连接到AppDomain.CurrentDomain中的AssemblyResolve事件,看看它是否真的在寻找组件。如果它找到它,你只需要保存一个动态加载的程序集及其路径列表。

有关AssemblyResolve的一点说明,如果您没有该程序集,则返回null。这是默认行为。