visual-studio-2010 - 针对 3.5 框架的 VS2010 上的 RESX 文件问题

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

这是我最近遇到的一个故事和一个可能的答案(?)我只是想分享这些信息,因为我还没有在 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

他们提出了一些不符合我们需求的解决方法:
  • 定位另一个平台和框架
  • 使用 corflags 来处理你的 C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin 目录!


  • 我们的设置
  • 旧环境:Windows XP 32 位
  • 新环境:Windows 7 64 位
  • 通用设置:VS2010 + 目标框架:3.5 + 目标平台:x86
  • 关于visual-studio-2010 - 针对 3.5 框架的 VS2010 上的 RESX 文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3398689/

    相关文章:

    c# - 如何运行Kinect SDK 中提供的C# SkeletalViewer 示例?

    c# - .net Core 解析csproj文件到对象

    asp.net - TeamCity 使用 MSDEPLOY ERROR_FILE_IN_USE

    msbuild - 通过相对路径引用 msbuild 社区任务

    c# - 如何将 Visual Studio 2008 解决方案资源更改为链接而不是嵌入?

    visual-studio-2010 - 在 VC++ 程序中使用 WinPcap

    visual-studio-2010 - VS2010 RC - 智能感知损坏了吗?我该如何打开它?

    asp.net - 使用 .Resx 文件作为全局应用程序消息?

    c# - ResXResourceWriter 砍掉文件末尾

    c# - 将 C# 代码转换为 C++ : Hex to Binary