最近、私はAAA.BBB.dll
それを呼び出すと、私はつまり、それを得るために、簡単なPowerShellコマンドを使用することを決めましょう、特定のDLLのアセンブリのバージョンを確認する必要がありました:。Reflection.AssemblyNameの予期しない結果()バージョン
[Reflection.AssemblyName]::GetAssemblyName('AAA.BB.dll').Version
私はこのコマンドが私が望むバージョンを表示していないことに気付きました。ほとんどの場合、現在のディレクトリ内のdllのバージョンと一致しない1つの固定バージョンが表示されます。 GetAssemblyNameメソッド(例えば、 'AAA.BB.dll123')にいくつかの無効な入力を提供しても、(例外を投げるのではなく)同じバージョンが示されました。私は絶対パスを使用しようとしたが、それは役に立たなかった。また、AAA.BB.dllがGACにないことを確認しました。
F#対話型で類似のコードを呼び出すか、.NETリフレクタでそのAAA.BB.dllを開くことで、正しいアセンブリバージョンを取得できます。
AssemblyName.GetAssemblyNameのドキュメントを確認しましたが、その動作の説明が見つかりませんでした。私は疑問に思っています:
なぜこのコマンドは常に1つのバージョンのDLLを表示していますか?
PowershellとF#のインタラクティブでの類推コードの違いはどのように説明できますか?それはアセンブリ解決メカニズムまたは.NET Frameworkの設定または.NET Frameworkのバージョンで何かですか?
無効な引数(つまり、 'AAA.BB.dll123')でGetAssemblyNameを呼び出すと例外がスローされないのはなぜですか?
私はDLLを含まないM:
ディレクトリで実行されたコマンドのカップルのための出力を貼り付けています。
PS M:\> [Reflection.AssemblyName]::GetAssemblyName('AAA.BB.dll').Version
Major Minor Build Revision
----- ----- ----- --------
1 0 600 8
PS M:\> [Reflection.AssemblyName]::GetAssemblyName('aAAA.BB.dll').Version
Exception calling "GetAssemblyName" with "1" argument(s): "Could not load file or assembly 'M:\aAAA.BB.dll' or one o
f its dependencies. The system cannot find the file specified."
At line:1 char:43
+ [Reflection.AssemblyName]::GetAssemblyName <<<< ('aAAA.BB.dll').Version
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
PS M:\> [Reflection.AssemblyName]::GetAssemblyName('AAA.BB.dll123').Version
Major Minor Build Revision
----- ----- ----- --------
1 0 600 8
PS M:\> [Reflection.AssemblyName]::GetAssemblyName("AAA.BB.dll123").Version
Major Minor Build Revision
----- ----- ----- --------
1 0 600 8
PS M:\> [Reflection.AssemblyName]::GetAssemblyName("AAA.BB123").Version
Exception calling "GetAssemblyName" with "1" argument(s): "Could not load file or assembly 'M:\AAA.BB123' or one of
its dependencies. The system cannot find the file specified."
At line:1 char:43
+ [Reflection.AssemblyName]::GetAssemblyName <<<< ("AAA.BB123").Version
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
PS M:\> [Reflection.AssemblyName]::GetAssemblyName("AAA.BB.123").Version
Major Minor Build Revision
----- ----- ----- --------
1 0 600 8
アセンブリバージョン1.0.600.8のAAA.BB.dllは、そのコンピュータの別のディレクトリにあります。
'AAA.BB.dll'は古いCOMアセンブリの権利ではありませんか? – mxmissile
いいえ、管理対象のDLLです –