在发布版本中构建而不是在 VS2008 中调试时,程序集将成为 32 位特定的

发布于 2024-09-11 23:31:51 字数 669 浏览 4 评论 0原文

在为我的一个模块构建程序集时,我遇到了一个奇怪的问题。

我在 64 位上运行时遇到错误,我追溯到与特定于 32 位的程序集有关。我们的模块(或应该)都被构建为有点不可知。

在程序集上运行 CorFlags.exe 显示以下内容。


版本:v2.0.50727

CLR 标头:2.5

PE:PE32

CorFlags:11

ILONLY:1

32BIT:1 <-- 注意 32 位标志设置为 1!

签名:1


但是,我随后返回重建模块,并且恰好在调试模式下构建。 (注:这是故事的简化版本,省略了解决方案测试、谷歌搜索和与龙战斗的时间:D)

这次当我检查 CorFlags.exe 时,它​​给出了以下内容:


版本:v2.0.50727

CLR 标头: 2.5

PE : PE32

CorFlags : 9

ILONLY : 1

32BIT : 0

Signed : 1


所以现在我很困惑,拆开了 Visual Studio 构建配置并发现它们完全相同(即全部设置为“任何 CPU”)现在不知道如何解决这个问题。

什么会导致这种行为?

I am having a strange issue when building assembly's for one of my modules.

I was getting errors when running on 64bit which I traced back to being related to the assembly being 32bit specific. Our modules are(or should) all be built to be bit agnostic.

Running CorFlags.exe on the assembly showed the following.


Version : v2.0.50727

CLR Header: 2.5

PE : PE32

CorFlags : 11

ILONLY : 1

32BIT : 1 <-- Note the 32bit flag set to one!

Signed : 1


However I then went back to rebuild the module and just so happened to build in debug mode. (Note: this is the simplified version of the story missing out the hours of solution testing, googling and a fight with a dragon :D)

This time when I checked CorFlags.exe it gave the following:


Version : v2.0.50727

CLR Header: 2.5

PE : PE32

CorFlags : 9

ILONLY : 1

32BIT : 0

Signed : 1


So now I am confused, having torn apart the visual studio build configs and found them to be exactly the same (i.e. all set to "Any CPU") I am now at a loss as to how to fix this.

What would cause this behaviour?

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

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

发布评论

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

评论(2

瞎闹 2024-09-18 23:31:51

构建+配置管理器,在左上角的组合中选择发布。关闭。现在使用“项目+属性”、“构建”选项卡并验证平台目标。

Build + Configuration Manager, select Release in the upper left combo. Close. Now use Project + Properties, Build tab and verify Platform Target.

感情洁癖 2024-09-18 23:31:51

我不确定是什么导致了这种行为,但这里有一个可能的解决方法:

您是否尝试过使用 /32BIT- 标志运行 CorFlags 以从程序集中清除 32BIT 标志?如果它有效,您可以添加一个构建后步骤来清除该标志。

I am not sure what's causing this behavior but here is a possible workaround:

Have you tried running CorFlags with /32BIT- flag to clear the 32BIT flag from the assembly? If it work you can add a postbuild step to cleat that flag.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文