2

好吧,我现在正处于一个痛苦的世界。

我们一直在 Win7 x64 上使用 VS2008(VB.NET,主要是 WinForms,还有 ASP.NET 和 Windows 服务)进行开发,具有特定要求(我们还不能摆脱),以 x86 和框架 3.5 为目标。

我们最近升级到 VS2010,很快就遇到了这个 ResGen.exe 不兼容问题。基本上,我们根本无法用 VS2010 编译 WinForms 应用程序。Microsoft 或其他人建议的解决方法都不适用于我自己或我团队的其他成员。

因此,我们尝试使用此处描述的技术(即破解解决方案文件)恢复到 VS2008,并创建一个全新的 VS2008 解决方案,并将项目添加到其中。这在短时间内似乎很好,但现在我们发现在调试应用程序时,IDE 不会捕获未处理的异常,这使得开发几乎不可能。

使用 VS2008(针对 x86 和 .NET 3.5 编译)创建的全新测试应用程序不会出现这种无法捕获异常的情况。

我现在不得不求助于在主计算机内的 Win7(32 位)VM 上在 VS2010 上进行开发,它确实可以工作......但它的速度很慢!

任何摆脱这种情况的想法将不胜感激!

更新

好的,所以这不是一个实际的解决方案,但作为一种解决方法,它并不是一场彻底的灾难......

感谢 Noah 的评论,这促使我探索各种虚拟化解决方案。我现在发现了(可能是这里的最后一个人!)VirtualBox。它不仅在使用上比VMWare Player和 Microsoft/Windows Virtual PC 的各种版本更流畅,而且还具有无缝模式,在该模式下,在 VM 上运行的应用程序在主机中显示为单独的窗口。所以我现在有一个运行 VS2010 的 x86 客户机,为 x86 和 Framework 3.5 编译。由于来宾中没有 x64/x86 冲突,因此没有 Resgen.exe 问题,并且我的 dev envt 只是在我的主机桌面上显示为一个窗口。它仍然比在本地运行它要慢,但我现在可以忍受它。

仍然会感谢任何实际的解决方案(或者,如果失败,微软的修复!)

4

2 回答 2

0

好吧,我放弃了。

VirtualBox 有一段时间还可以,但是虚拟机的缓慢很烦人,而且永远不得不管理主机和来宾之间的移动东西让我发疯。

所以我用 Windows 7 x86 重建了整台机器。

完全厌恶微软对这个问题的明显冷漠,但我想我不是第一个有这种感觉的人。

于 2010-12-05T12:06:04.420 回答
0

您可以通过以下方式将 ResGen.exe 制作为 32 位: 1. Cd “%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\Bin” 2. Corflags /32Bit+ /Force ResGen.exe

在此更改之前保存您以前的 resgen.exe。

在此更改之后,您需要修改所有项目以告诉 Resgen 在 32bitmanaged 模式下运行

  1. 将 Managed32Bit 添加到生成面向 .NET 3.5 的资源的任何项目的项目文件中的 PropertyGroup - 由于 corflags 技巧会在系统范围内影响 ResGen.exe 的位数,因此还必须为所有受影响的项目设置该属性。

  2. 或者如果直接运行 MSBuild.exe,则使用全局属性开关传递它:'/p:ResGenToolArchitecture=Managed32Bit'</p>

该解决方案发布在http://tune-up-pc.com/blog/?p=10790

于 2011-02-08T12:11:36.010 回答