2009-11-17 36 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。這是默認行爲。