2012-03-12 71 views
3

如何變化的.NET框架時遷移.resx文件......當如何改變.NET框架

我改變了.NET框架4.0〜3.5(因爲incompatbility我們發現遷移.resx文件在第三方DLL),一切都很好,除了一些.RESX文件搞砸了。我正在開始手動修復它們,但是有一些工具可以用於此目的嗎?或者你們怎麼做?

+1

應該不會出現從3.5的資源文件的問候遷移到4.0的任何問題人物做了什麼該文件包含什麼並且搞亂了什麼? – Svarog 2012-03-12 15:59:19

+0

@Svarog,不是真的。當針對.NET 3.5時,RESX文件中的大多數條目都會引用版本爲2.0的系統DLL,當針對.NET 4.0時,它們將全部引用相同的DLL,但與版本= 4.0。這就是問題所在,你需要手動修改這些問題以及任何可能出現的問題(請參閱下面的答案) – Denis 2012-03-12 17:30:07

回答

2

與「impr0t」(做一個全局替換)相同,但通常RESX文件中會出現此問題:「無法加載程序集...或其某個依賴項。嘗試加載具有無效結構的程序」它會指向這樣的事情在您的RESX文件:

<metadata name="icons_20.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
    <value>115, 17</value> 
</metadata> 
<data name="icons_20.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> 
    <value>  AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w  LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 
... 
... 
...  AQEB7wL/BwABeAEBAeAJAAFwAQAB4AkAAWABAAFgCQABQAEAAWALAAEgCwABIDsAASAJAAFAAQABIAkA 
AUABAAEgCQABYAEAAWAJAAFwAQAB4AkAAXgBAQHgCQABfAEHAeALAAEPAv/3AAs= 
</value> 
</data> 

所以修復程序描述如下:

http://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file-seems-related-to-beta2-bug-5252020

從該網站:

解決方法

  1. 打開窗體設計器中,使所需的圖形用戶界面的變化。關閉設計器並保存
  2. 編譯項目並收到RESX編譯錯誤(只有帶Imagelist的窗體應該有這個問題)
  3. 雙擊resx編譯錯誤打開resx文件。
  4. 滾動到圖像流的頂部。
  5. 編輯圖像流的頂線:AAEAAAD ///// AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w TO AAEAAAD ///// AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
  6. 關閉並保存的resx文件並重新編譯。

**注:唯一的區別是,在結束「j00LjAuMC4w」到‘j0yLjAuMC4w’

2

我通常剛剛通過並編輯了xml。

.NET 4.0

<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 

.NET 2.0

<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 

,如果你只是做一個找到&代替它並不需要太長時間的事情。在重新編譯時,一切看起來都很順利。

+0

是的,這就是我通常所做的,但是這次我其實在這個問題上做到這一點(見我的答案)時有錯誤。只是想知道是否有一些我們應該使用的工具,而不是像我們正在做的那樣手動執行... – Denis 2012-03-12 17:32:58