【问题标题】:Issues with RESX files on VS2010 targeting 3.5 framework针对 3.5 框架的 VS2010 上的 RESX 文件问题
【发布时间】:2026-01-13 08:05:01
【问题描述】:

这是我最近遇到的一个故事和一个可能的答案(?)我只是想分享这个信息,因为我在 * 上找不到这个。

我将我的解决方案从 VS2008、WinXP、32 位升级到 VS2010、Win7、64 位。

当我对生成新 RESX 文件或更新 RESX 文件的 WinForms 进行修改时,我遇到了问题。

使用 VS2010 进行调试构建没有问题。但是对于发布模式,我必须使用延迟签名过程。现在,该过程在使用 VS2010 生成的 new 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 位的第 3 方程序集。 (我无法控制他们的构建过程)

-- 2010 年 8 月 11 日 一些附加信息。

控件本身没有签名或延迟签名。但是控件正在使用延迟签名的程序集中的组件。两个程序集都在同一个解决方案中。

当我将使用程序集更改为针对 4.0 框架时,问题得到解决。 当我针对 3.5 框架时,我们得到了错误。

【问题讨论】:

    标签: visual-studio-2010 msbuild resx windows-7-x64


    【解决方案1】:

    我们遇到的问题还在于 *.resx 文件中的 ImageList(在代码中打开,而不是在设计器中打开):

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

    我们确认这是通过仅删除与ImageList 相关的&lt;data /&gt; 标记(见上文),然后删除控件设计器中的引用:

    //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 周围挖掘,看看哪个坏的 &lt;data /&gt; 把你搞砸了。

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

    他们提出了一些不符合我们需求的解决方法:

    • 瞄准另一个平台和框架
    • 使用 corflags 来破坏您的 C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin 目录!

    我们的设置

    • 旧环境:Windows XP 32 位
    • 新环境:Windows 7 64 位
    • 通用设置:VS2010 + 目标框架:3.5 + 目标平台:x86

    【讨论】: