2

わかりました、私は今、痛みの世界にいます。

x86 とフレームワーク 3.5 をターゲットにするために、Win7 x64 上で VS2008 (VB.NET、主に WinForms、ASP.NET および Windows サービス) を使用して開発を行ってきました。

最近 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 の問題はなく、開発環境はホスト デスクトップにウィンドウとして表示されます。ネイティブで実行するよりもまだ遅いですが、今のところは我慢できます。

実際の解決策(または、それが失敗した場合は、Microsoft からの修正!!)をいただければ幸いです。

4

2 に答える 2

0

さて、私はあきらめました。

VirtualBox はしばらくの間は問題ありませんでしたが、VM の遅さに悩まされ、ホストとゲストの間で移動するものを永遠に管理しなければならないことに頭がおかしくなりました。

そこで、マシン全体を Windows 7 x86 で再構築しました。

この問題に対する Microsoft の明らかな無関心に完全にうんざりしているが、そう感じたのは私が初めてではないだろう。

于 2010-12-05T12:06:04.420 に答える
0

Make ResGen.exe を 32 ビットにするだけです: 1. Cd “%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\Bin” 2. Corflags /32Bit+ /Force ResGen.exe

この変更を行う前に、以前の resgen.exe を保存してください。

この変更の後、すべてのプロジェクトを変更して、Resgen を 32 ビットマネージド モードで実行するように指示する必要があります。

  1. .NET 3.5 を対象とするリソースを生成するプロジェクトのプロジェクト ファイルで、Managed32Bit を 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 に答える