カスタム ディレクトリでアセンブリ バインド ログを表示したいので、Fusion Log Viewer のデモを実行しようとしています。
次のように、このための小さなデモアプリケーションを作成しました。
メソッド GetString() を 1 つだけ含み、アセンブリ バージョンを 1.0.0.0 に設定する小さなクラス ライブラリ プロジェクト
namespace ClassLibrary1
{
public class Class1
{
public static string GetString()
{
return "yes";
}
}
}
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
上記のライブラリを参照し、次のコードを持つ小さなコンソール アプリケーション プロジェクト:
ClassLibrary1.dll バージョン 1.0.0.0
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ClassLibrary1.Class1.GetString());
Console.ReadLine();
}
}
}
このコンソール アプリケーションをビルドし、ビジュアル スタジオを閉じてから、実行可能ファイルを実行します。期待どおり「はい」と出力されます。
次に、ClassLibrary1 の AssemblyInfo を次のようにアップグレードして、バージョン番号を 2.0.0.0 に変更します。
[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.0.0")]
コンソール アプリケーション内のライブラリをこのバージョン 2.0 に置き換え、実行可能ファイルを再度実行すると、引き続き動作し、「yes」と出力されます。
参照されている DLL が存在しないのに、なぜまだ機能しているのですか? Fusion Log Viewer のカスタム ディレクトリ内に Assembly Bind Log エラーが作成されることが予想されます。
なぜまだ機能しているのか、誰でも説明できますか?