2010-08-03 77 views
6

以下是我最近碰到的一個故事和一個可能的答案(?)我只是想分享這些信息,因爲我無法在計算器中找到它。針對3.5框架的VS2010上RESX文件的問題針對3.5框架

我升級了我的解決方案,從VS2008,WinXP,32位到VS2010,Win7,64位。

當我對WinForms進行修改以生成新的RESX文件或更新RESX文件時,我遇到了問題。

使用VS2010進行Debug生成不成問題。但是對於發佈模式,我必須使用延遲簽名過程。現在,該進程在使用VS2010生成的新的 RESX文件上出錯。 (請注意舊的RESX文件不顯示此行爲)

(CoreResGen目標) Search.resx(176,5):錯誤RG0000:無法加載文件或程序集xxx.Controls,版本= 1.5 0,文化=中立,PublicKeyToken = 7acfcc7eabace048'或其依賴項之一。強名稱驗證失敗。 (EXCE從HRESULT:0x8013141A)176線,位置5

下面是一些I的捲筒紙

http://blogs.msdn.com/b/visualstudio/archive/2010/06/19/resgen-exe-error-an-attempt-was-made-to-load-a-program-with-an-incorrect-format.aspx

我想知道如果其他口人遇到了這個和其解決方法中提供的信息他們遵循? 沒有解決方法,意味着等待VS2010 SP1出來。

不幸的是我使用的第三方程序集可能已被編譯爲32位。 (我不控制它們的構建過程)

- 8/11/2010 一些附加信息。

控件本身沒有簽名或延遲簽名。但是控件正在使用延遲簽名的程序集中的組件。兩個組件都在相同的解決方案中。

當我將使用程序集更改爲目標4.0框架時,問題已解決。 當我定位3.5框架時,我們得到錯誤。

回答

1

我們經歷也與* .resx文件內ImageList問題(在代碼中,而不是設計師打開):

<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> 
    <value> 
     [bunch of binary data here] 
    </value> 
</data> 

我們證實這是隻刪除相關ImageList<data />標籤(見上文),然後刪除該控件的設計師參考:

//initialize 
this.imageListSuperHeroes = new System.Windows.Forms.ImageList(this.components); 

//control that references the ImageList 
this.btnAwesome.ImageKey = "superman.gif"; 
this.btnAwesome.ImageList = this.imageListSuperHeroes; 

添加圖像引用(!使用單個圖像),從「項目資源文件」的控制,而不是「本地資源「並更新您從表單中刪除的引用。

this.btnAwesome.Image = global::PMPPlus.Properties.Resources.Superman; 

爲我們修復了它,希望這有助於您朝着正確的方向前進。如果沒有,請在* .resx周圍進行挖掘,看看哪一個不好的<data />會讓你感到困擾。

相關鏈接:http://connect.microsoft.com/VisualStudio/feedback/details/566131/error-in-resx-file-when-adding-imagelist

他們提出一些解決方法是不適合我們的需求:\ Program Files文件\:

  • 目標的另一平臺和框架
  • 使用corflags與你的C螺絲Microsoft SDKs \ Windows \ v7.0A \ Bin目錄!

我們設置

  • 舊環境:Windows XP 32位
  • 新環境:Windows 7 64位
  • 通用設定:VS2010 +目標框架:3.5 +目標平臺:x86