这是我最近遇到的一个故事和一个可能的答案(?)我只是想分享这些信息,因为我还没有在 stackoverflow 上找到它。
我将我的解决方案从 VS2008、WinXP、32 位升级到 VS2010、Win7、64 位。
当我对生成新 RESX 文件的 WinForms 进行修改或更新 RESX 文件时,我遇到了问题。
使用 VS2010 进行调试构建没有问题。但是对于 Release模式,我必须使用延迟签名过程。现在,该过程会在使用 VS2010 生成的新 RESX 文件上出错。 (再次注意旧的 RESX 文件不会显示这种行为)
(CoreResGen 目标)
Search.resx(176,5): 错误 RG0000: 无法加载文件或程序集 xxx.Controls, Version=1.5 0, Culture=neutral, PublicKeyToken=7acfcc7eabace048' 或其依赖项之一。强名称验证失败。 (从 HRESULT 开始:0x8013141A)第 176 行,位置 5。
以下是我在网上找到的一些信息
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 位的 3rd 方程序集。
(我无法控制他们的构建过程)
-- 2010 年 8 月 11 日
一些额外的信息。
控件本身没有签名或延迟签名。但是该控件正在使用延迟签名的组件中的组件。两个程序集都在同一个解决方案中。
当我将消费程序集更改为针对 4.0 框架时,问题就解决了。
当我以 3.5 框架为目标时,我们得到了错误。
最佳答案
我们遇到的问题也是 ImageList
在 *.resx 文件中(在代码中打开,而不是在设计器中打开):
<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
[bunch of binary data here]
</value>
</data>
我们仅通过删除
<data />
确认了这一点。与 ImageList
相关的标签(见上文),然后删除控件设计器中的引用://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
他们提出了一些不符合我们需求的解决方法:
我们的设置
关于visual-studio-2010 - 针对 3.5 框架的 VS2010 上的 RESX 文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3398689/