0

私たちは奇妙な問題に直面しています。WPF で記述されたユーザー コントロールがあり、xaml ファイルにクリック イベント ハンドラーを追加しました。ローカル システムでは、期待どおりに動作します。しかし、ビルドがサーバー (コード リポジトリがある場所) で生成されると、結果のビルドにバグがあることに気付きます。バグは、このコントロールに対してクリック イベントが毎回 2 回生成されることです。画像を参照するためのイベント ハンドラー関数で OpenFileDialog を使用しています。VS を介したローカル システム ビルドではビルドに CSC.exe が使用され、サーバーでは MSBuild.exe が使用されることに気付きました。そこで、ローカル システムでも MSBuild を使用してビルドを試みました。ただし、バグはローカル システムでは再現されません。VS を使用してサーバー システムでコードをビルドしても、バグは再現されません。したがって、バグを再現する唯一の方法は、サーバー上で自動ビルドを生成することです。両方の dll (バグのあるものとないもの) の IL コードを比較してみました。イベント ハンドラ関数の IL コードを確認しました。ILコードは同一です。

どのような状況下でもバグがローカル システムで再現されないため、コードに疑いはありません。さらに入力/詳細が必要な場合はお知らせください。

どんな助けでも大歓迎です。

ありがとう、ミシャル

4

2 に答える 2

1

(VS は MSBuild を使用しています。)

VSでは、設定

Tools\Options\Project and Solutions\Build and Run\MSBuild project output verbosity

'diagnostic' に変更し、プロジェクトを消去してビルドし、出力ウィンドウからログをキャプチャします。

サーバーで実行した "msbuild.exe /v:diag ..." の出力と比較します。

うまくいけば、それが格差の原因を見つけるでしょう。

于 2010-07-01T05:37:15.017 に答える
0

ところで、これは非常に簡単に「修正」(回避策)されました。ボタンのクリックイベントハンドラーがXAMLからではなくコードから追加された場合、バグはなくなります:| XAMLローダーのMSバグの可能性があると思います。他の人もこれに直面しているかどうかはわかりませんが、2か所以上でこのバグに積極的に直面しています。欠落しているリンクの1つは、どのような状況でバグが発生するかです。これまで、ボタンのみの場合にこれを見てきました。これが他にどこに表示されるかわからない

于 2010-07-20T13:00:12.313 に答える