최근에, 나는 AAA.BBB.dll
를 호출하자, 특정 DLL의 어셈블리 버전을 확인했고, 나는 즉, 그걸 얻기 위해 간단한 PowerShell 명령을 사용하기로 결정 :예기치 않은 결과() 버전
[Reflection.AssemblyName]::GetAssemblyName('AAA.BB.dll').Version
이 명령은 내가 원하는 버전을 표시하지 않는다는 것을 깨달았습니다. 대부분의 경우 현재 디렉토리에있는 dll의 버전과 일치하지 않는 고정 된 버전을 표시합니다. GetAssemblyName 메소드에 잘못된 입력 (예 : 'AAA.BB.dll123')을 제공하더라도 예외를 던지는 대신 동일한 버전이 표시되었습니다. 절대 경로를 사용하여 시도하고 도움이되지 않았다. 또한 AAA.BB.dll이 GAC에 없는지 확인했습니다.
F # 대화 형으로 아날로그 코드를 호출하거나 .NET 반사기에서 해당 AAA.BB.dll을 열어 올바른 어셈블리 버전을 얻을 수있었습니다.
AssemblyName.GetAssemblyName에 대한 설명서를 확인한 결과 해당 동작에 대한 설명을 찾을 수 없습니다. 궁금하네요 :
왜이 명령은 한 버전의 DLL을 지속적으로 표시합니까?
Powershell과 F # 대화식의 유사 코드 간의 차이점은 어떻게 설명 할 수 있습니까? 어셈블리 해결 메커니즘 또는 .NET Framework 구성 또는 .NET Framework 버전과 관련이 있습니까?
잘못된 인수 (즉 'AAA.BB.dll123')로 GetAssemblyName을 호출해도 예외가 throw되지 않는 이유는 무엇입니까?
나는 어떤 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입니다 –