2012-11-27 104 views
4

考慮以下情況:無效.resx文件的命名空間

  • 在我的Windows窗體appliation我有一個表格。
  • 該表單有一個.resx文件。
  • 表單使用來自其他程序集(「Other.dll」)的類(「OtherClass」)。
  • 「Other.dll」與主應用程序 (只是同一解決方案中的一個單獨項目)構建在同一VisualStudio 2010解決方案中。
  • 在主項目(Windows窗體應用程序)中,我正確地添加了對「Other.dll」項目的引用 。

一切正常(如預期)。

現在我需要從「Old.Namespace」到「New.Namespace」更改包含在「Other.dll」類型的命名空間:

  1. 在VS2010,造就了我的屬性窗口在「Other.dll」 項目
  2. 我從「Old.Namespace」「默認命名空間」文本框中的名稱空間更改爲 「New.Namespace」
  3. 我改變命名空間相關的.cs文件相應
  4. 我重建修改後的「Other.dll」項目噸。沒有錯誤。修改後的「Other.dll」生成OK。

現在問題來了:

當我在此之後重建整體解決方案,編譯器停止,並報告形式的.resx文件是無效的:


「無效Resx文件無法加載類型Old.Namespace.OtherType其他版本1.0.0.0 Culture = neutral,PublicKeyToken = null在.RESX文件中使用。確保必要的引用已添加到項目中。 1521行,位置5「


顯然,.resx文件仍然引用從某處命名空間中的類型。這個「某處」似乎來自.resx文件的二進制部分!

問題: 我該如何讓.resx明白它現在必須引用新類型(使用更改後的命名空間)?

請幫幫忙,我真的不知道該怎麼繼續在這裏...

+1

您是否嘗試過在您的resx上「運行自定義工具選項」(右鍵單擊)? – lnu

+0

您是否嘗試刪除對Other.dll的引用並重新添加?也許「copy local = True」可能會導致問題.. –

+0

否。但是當我在Solution Explorer中右鍵單擊.resx文件時,在彈出菜單中看不到任何「運行自定義工具」?你能更具體一點嗎? –

回答

0

您需要手動打開RESX文件,並改變這個二進制資源的類型名稱爲新的正確的類型名稱。我猜這是一個非標準的(即不是字符串或圖像)資源,它是直接手動添加到resx文件的。

我相信這些只能在ResX編輯器的「其他」部分查看 - 不能通過它添加。

10

我有同樣的問題,解決辦法是從RESX文件

+0

謝謝隊友!這就是訣竅! –

2

我也有同樣的問題刪除數據段,並嘗試其他幾個選項後,我跟着斯特凡Mereut的advice和刪除數據來自resx文件的部分。當我重新添加資源時,它顯然正確地重寫了數據部分。