1

場所xにGUIアプリケーションコードでいっぱいの.dllを使用するアプリケーションがあります。以前はボタンが1つありましたが、現在は2つあります。

アプリケーションを起動すると、2つのボタンが付いたGUIが表示されますが、1つのボタンが付いたGUIが表示されます。私は自分のGUI.dllを再構築しましたが、どこかからの古いバージョンを魔法のように使用しています。コードをデバッグしようとすると、使用しているコードのバージョンが.dllのものとは異なると表示されます。

私の質問は、「.dllを探している場所を見つけるにはどうすればよいですか?.dllをコンパイルする場所が1つしかないのに、なぜ古いバージョンを使用しているのですか?」

また、私はそれを参照していて、2つのボタンが入っている正しいバージョンであることを述べたいと思いました。しかし、私が実行すると、別のバージョンを使用していますか?

4

3 に答える 3

4

Visual Studioを使用している場合は、[モジュール]ウィンドウを開き、[デバッグ]->[ウィンドウ]->[モジュール](Ctrl-D + M)を押すと、ロードされているすべてのアセンブリが一覧表示されます。

実行時にAppDomain.CurrentDomain.GetAssemblies()を使用して、各Assembly.CodeBaseを確認しながらリストをウォークすることもできます。

他のすべてが失敗した場合は、sysinternals http://technet.microsoft.com/en-us/sysinternals/bb896645のProcessMonitorを使用して、プロセスによって読み込まれるdllを監視することもできますが、大量の出力が除外されます。

于 2012-08-17T10:17:37.733 に答える
1

デバッグしている場合は、[モジュール]ウィンドウを開くことができます( [デバッグ] >[ウィンドウ] >[モジュール])。これにより、名前とフルパスを含む、プロセスにロードされたすべての実行可能ファイルが表示されます。これで、古いDLLがロードされた場所を特定できるはずです。

于 2012-08-17T10:19:14.787 に答える
0

名前空間でReflectionを使用してみることができます。System.Reflection

var assembly = Assembly.Load("your-assembly-name");

assembly次に、オブジェクトのバージョン情報を調べます。

于 2012-08-17T10:16:19.957 に答える