针对 3.5 框架的 VS2010 上的 RESX 文件存在问题

发布于 2024-09-12 20:24:12 字数 967 浏览 2 评论 0原文

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

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

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

使用 VS2010 进行调试构建没有问题。然而,对于发布模式,我必须使用延迟签名过程。现在,该过程在使用 VS2010 生成的 RESX 文件上出现错误。 (再次注意,旧的 RESX 文件不会显示此行为)

(CoreResGen 目标) Search.resx(176,5):错误 RG0000:无法加载文件或程序集 xxx.Controls,Version=1.5 0,Culture=neutral,PublicKeyToken=7acfcc7eabace048' 或其依赖项之一。强名称验证失败。 (来自 HRESULT 的异常:0x8013141A)第 176 行,位置 5。

以下是我在网上找到的一些信息

Link

我想知道其他人是否遇到过这个问题以及他们遵循了哪种解决方法? 没有解决方法就意味着等待 VS2010 SP1 的发布。

不幸的是,我正在使用可能已编译为 32 位的第 3 方程序集。 (我无法控制他们的构建过程)

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

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

当我将使用程序集更改为针对 4.0 框架时,问题就解决了。 当我以 3.5 框架为目标时,出现错误。

Here is a story what I recently ran into and a possible answer(?) I just wanted to share this information because I could not find this yet at stackoverflow.

I upgraded my solution from VS2008, WinXP, 32bit TO VS2010, Win7, 64bit.

When I make modifications on WinForms that generate new RESX files, or update the RESX files, I'm running into problems.

A Debug build with VS2010 was no problem. However for Release mode I have to use a delay-signing process. Now that process gives errors on new RESX files that are generated with VS2010. (Again note that old RESX files do NOT show this behaviour)

(CoreResGen target)
Search.resx(176,5): error RG0000: Could not load file or assembly xxx.Controls, Version=1.5 0, Culture=neutral, PublicKeyToken=7acfcc7eabace048' or one of its dependencies. Strong name validation failed. (Exce on from HRESULT: 0x8013141A) Line 176, position 5.

Here is some of the information I found on the web

Link

I was wondering if other peopele ran into this and which workaround they followed?
No workaround would mean, waiting for the VS2010 SP1 to come out.

Unfortunately I'm using 3rd party assemblies that might have been compiled as 32bit.
(I'm not in control of their build process)

-- 8/11/2010
Some additional information.

The control itself is not signed or delay-signed. But the control is using a component from an assembly that is delay-signed. Both assemblies are in the same solution.

When I change the consuming assembly to target the 4.0 framework the issue is resolved.
When I target the 3.5 framework, we get the error.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鹤仙姿 2024-09-19 20:24:12

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

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

我们通过仅删除 < 来确认这一点/code> 与 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,看看哪个坏 正在搞砸你。

相关链接: 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

The issue we experienced was also with the ImageList inside the *.resx file (opened in code, not the designer):

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

We confirmed this was by only deleting the <data /> tag related to the ImageList (see above) and then deleting the references in the control's designer:

//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;

Add the image references (use individual images!) of the control from the "Project resource file", rather than the "Local resource" and update the references you removed from your forms.

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

That fixed it for us and hopefully this helps move you in the right direction. If not, dig around the *.resx to see which bad <data /> is screwing you up.

Related link: http://connect.microsoft.com/VisualStudio/feedback/details/566131/error-in-resx-file-when-adding-imagelist

They suggested some workarounds that didn't fit our needs:

  • Target another platform and framework
  • Use corflags to screw with your C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin directory!

Our Setup

  • Old Environment: Windows XP 32-bit
  • New Environment: Windows 7 64-bit
  • Common Setup: VS2010 + Target Framework: 3.5 + Target Platform: x86
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文