내 웹 팜의 모든 서버에서 .NET GAC에 설치된 어셈블리 보고서를 생성 할 수있는 도구를 아는 사람이 있습니까? (30-40 서버)여러 서버에 대한 GAC 비교 도구?
다른 방법으로 WMI, 원격 레지스트리 쿼리 또는 일부 다른 기술을 통해 프로그래밍 방식으로 정보에 액세스하는 포인터 나 링크가있는 사람이 있습니까?
내 웹 팜의 모든 서버에서 .NET GAC에 설치된 어셈블리 보고서를 생성 할 수있는 도구를 아는 사람이 있습니까? (30-40 서버)여러 서버에 대한 GAC 비교 도구?
다른 방법으로 WMI, 원격 레지스트리 쿼리 또는 일부 다른 기술을 통해 프로그래밍 방식으로 정보에 액세스하는 포인터 나 링크가있는 사람이 있습니까?
감사합니다. Kragen은 Explorer의 GAC보기의 베니어 밑에 System.IO 네임 스페이스로 쿼리 할 수있는 파일이 있음을 알았습니다. 다행히 각 서버에 대한 네트워크 액세스 권한이 있습니다.
단일 어셈블리의 경우 많은 서버의 GAC에있는 버전을 쿼리하기 만하면되었습니다. 이 관심의 각 서버 IP에 대해 한 번 호출 할 수 있습니다
private static void QueryServerGAC(string IP)
{
string rootPath = String.Format(@"\\{0}\C$\WINDOWS\Assembly", IP);
DirectoryInfo root = new DirectoryInfo(rootPath);
foreach (DirectoryInfo gacDir in root.GetDirectories("GAC*")) // GAC, GAC_32, GAC_MSIL
{
foreach (DirectoryInfo assemDir in gacDir.GetDirectories("MyAssemblyName"))
{
foreach (DirectoryInfo versionDir in assemDir.GetDirectories())
{
string assemVersion = versionDir.Name.Substring(0, versionDir.Name.IndexOf('_'));
foreach (FileInfo fi in versionDir.GetFiles("*.dll"))
{
FileVersionInfo vi = FileVersionInfo.GetVersionInfo(fi.FullName);
Console.WriteLine("{0}\t{1}\t{2}\t{3}", IP, fi.Name, assemVersion, vi.FileVersion);
}
}
}
}
}
, 콘솔에 IP, DLL 이름, 조립 버전과의 FileVersion을 인쇄 : 지금까지 완전한보고 응용 프로그램에서 동안,이 조각은 내 목적을 멋지게 제공 .
이 코드를 마음대로 수정하십시오.
레지스트리에서 일반 탐색기보기로를 설정하는 기본 GAC보기를 비활성화 할 수 있습니다, 단지 1에 다음 값을 설정 :
HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion\
(출처 http://sqlmusings.wordpress.com/2007/11/17/how-to-disable-gac-view/)
을 당신은 다음 수 일부 폴더 비교 도구를 사용하거나 폴더 이름에서 어떤 어셈블리가 있는지 확인하십시오.
FYI - 탐색기보기를 끄기 만하지만 파일 시스템과의 다른 상호 작용 지점 (예 : C#의 File 개체 또는 명령 프롬프트)에 이미이보기가 표시되어 있으므로이 레지스트리를 설정할 필요가 없습니다. 모든 서버에서 키를 누릅니다.
감사합니다. - 나는 서로 짝을 이루는 웹 서버를 유지하는 데 끔찍한 시간을 보내고 있습니다. 그리고 이것은 도움이 될 것입니다! – SqlRyan