2

Windows 7 64 ビットを実行している x64 マシンがあります。週の初めから非常に奇妙な状況にあるようです。

プラットフォーム ターゲットを x86 に設定して WPF アプリケーションをビルドして実行すると、グリッドを作成しようとしたときに MissingMethodException が発生しました。

var g = new Grid();

ただし、StackPanel の作成は正常に機能します。

var s = new StackPanel();

プラットフォーム ターゲットを x64 または AnyCpu に切り替えると、両方のコードが正常に動作します。フレームワーク内の破損したアセンブリについて考えていましたが、明らかに奇妙に見えます...何か考えはありますか?

アップデート:

Microsoft 内の WPF チームのメンバーと連絡を取り合っています。しかし、何が悪いのかを理解するために私のマシンを見る時間はありませんでした。その間、正常に動作し続けるためにマシンを再インストールする必要がありました。ご協力ありがとうございました。問題は WOW64 の機能に関連していたと思いますが、正確に特定するのは困難です。さらに情報が見つかったら、この質問を更新します。

4

2 に答える 2

4

プラットフォームターゲットをx86に設定すると、アプリケーションはアンマネージアセンブリでx86バージョンを呼び出し、WOW64モードで実行されます。プラットフォームターゲットに関するこの記事WOW64に関するこのmsdnページを参照してください。Reflectorで静的グリッドコンストラクターをトレースすると、一部のスレッド初期化コードが外部のアンマネージ関数「RuntimeHelpers.PrepareConstrainedRegions()」を呼び出しているように見えます。これが問題の原因である可能性があります(StackPanelはこのコードを呼び出しません)。これには少し憶測がありますが、Windows Updateを実行して、同僚と同じ更新プログラムがあることを確認し、VS/.NETの更新プログラムもすべて入手できるようにしてみてください。

最終的に、コードからx86アセンブリとしてのみ使用可能なサードパーティのアンマネージdllを呼び出さない限り、プラットフォームターゲットをAny CPUのままにして、x86およびx64プラットフォームでネイティブに実行されるようにする必要があります。

最後に、Windows Updateを実行した後も問題が発生する場合は、可能であれば、同僚のPCも更新して、問題が発生するかどうかを確認します。もしそうなら、WOW64レイヤーにバグがある可能性があり、Microsoftにバグレポートを提出するのは良いことです。

于 2010-10-20T18:46:01.623 に答える
4

私もこの構成を使用しており、グリッドを使用する x86 アプリケーションを構築する際に問題は発生していません。

使用している .NET Framework のバージョン (.NET 4.0 のように見えます) をアンインストールして、再インストールします。徹底するには、Visual Studio 2010 をアンインストールしてから再インストールすることもできます (ただし、これはやり過ぎかもしれません)。

問題は、作業しているマシンにのみ存在する必要があります... そうしないと、暴徒や熊手などが発生します... ワシントン州レドモンドに向かっています。:-) 別のマシンでサンプル プロジェクトを作成してみてください。:-)

アップデート

System.Windows.Controls.Grid が PresentationFramework アセンブリに存在することを追加したかっただけです。このファイルがあなたのマシンのどこに保存されているかを調べてみるのも面白いかもしれません...何か気づいたかどうかを確認してください。解決策はおそらく再インストールです...しかし、情報が多いほど常に良いです.

.NET 4.0 の場合、PresentationFramework アセンブリは C:\Windows\Microsoft.NET\assembly\GAC_MSIL\PresentationFramework\v4.0_4.0.0.0__31bf3856ad364e35 にあります。

.NET 3.0/3.5 の場合、PresentationFramework アセンブリは C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 にあります。

于 2010-10-15T13:30:58.013 に答える