コードプロファイラー(この場合はドローンプロファイラー)が.NETアプリを直接実行するのとは異なる方法で実行する方法を理解しようとしています。これを知る必要がある理由は、開発用コンピューターの.NETインストールに非常に奇妙な問題/破損があり、プロファイラーの外部に現れるが、非常に奇妙なことに内部には現れないためです。コンピューターの問題を修正できる理由を理解できれば。
この問題は、System.Net.NetworkInformationのメソッドの呼び出しにのみ影響するようです(4に対して何かを構築した場合は、.NET 3.5から2.0内でのみ問題ありません)。System.Net.NetworkInformation.IsNetworkAvailable()を呼び出す、1つのことだけを行う小さなテストアプリを作成しました。プロファイラーの外で、System.dllで「致命的な実行エンジンエラー」が発生しました。これがすべての情報です。私が理解していることから、エラーは通常、ネイティブメソッド呼び出しに起因します。これは、おそらくSystem.dllによって一部のネイティブDLLにIsNetworkAvailable()ロジックを実行させたときに発生します。
- プロセスモニターを使用してプロファイラーの内部と外部の違いを把握し、両方の状況からのイベントを記録して比較しようとしました。iphlpapi.dllとwinnsi.dllが呼び出された直後、およびdnsapi.dllと呼ばれるプロファイラー実行コードと非プロファイラーコードがクラッシュレポート関連のものの読み込みを開始する直前まで、両方のログは同じでした。プロファイラー実行コードが4〜6個の新しいスレッドを作成し、非プロファイラー(クラッシュ)コードが1個または2個しか作成しなかったその瞬間、それが何を意味するのかわかりません。
おそらく不必要な背景
Windows 7に含まれる.NETインストール(3.5から2.0)は、ハードドライブが破損し、チェックディスクが不良クラスターを検出し始めるまで、正常に機能していました。ドライブを新しいものにイメージしましたが、.NETのこの1つの問題を除いて、すべて正常に動作します。
この問題を解決するには、Windowsを再インストールするか、イメージバックアップに戻す必要があります。
これが私が調べたもののいくつかです:
- ディスクの前後の問題に最も関連があると思われるファイル/ディレクトリ(Windowsおよびプログラムファイルの.NETのもの)を比較しましたが、予期しない変更は見られませんでした(明らかなファイルの破損はありません)。
- ソフトウェアとシステムレジストリのハイブのディスク前後の問題を比較しましたが、関連性があると思われる変更は見られませんでした。
- 新しいユーザーアカウントを作成し、環境が関連している場合に備えて環境変数をクリーンアップしました。変化なし。
- 「sfc/scannow」を実行しましたが、整合性の問題は見つかりませんでした。
- 「ngenupdate」を試して、破損している可能性のあるものを見逃して何も変更されていない場合に備えて、コンパイル済みのコードを再生成しました。
- ウイルススキャナーを取り外して、干渉しているかどうかを確認しました。違いはありません。
- セーフモードでテストコードを実行してみましたが、同じクラッシュの問題です。
.NETインストールを修復する必要があると思いますが、Windows7には.NET3.5-2.0が含まれているため、.NETインストーラーを再実行してやり直すことはできません。Windowsを自分自身に再インストールするためのWindowsディスクにアクセスできません(コンピューターにはリカバリパーティションがありますが、使用できません)。また、ドライブはディスク全体の暗号化ソリューションを使用しており、再インストールは困難です。
ここで最初からやり直して新しいWindowsをインストールし、数十のソフトウェアパッケージを再インストールし、開発関連の数十のカスタマイズなどを覚えておくのは絶対に嫌です。
それをすべて考えると...誰かが何か役立つアドバイスがありますか?私は開発者であり、それに対してビルドしてテストする必要があるため、.NET3.5-2.0が機能する必要があります。
ありがとう!
Quinxy