문제

내 웹 팜의 모든 서버에 .NET GAC에 설치된 어셈블리 보고서를 생성 할 수있는 도구를 아는 사람이 있습니까? (30-40 서버)

또는 또는 누구나 프로그래밍 방식, WMI 또는 원격 레지스트리 쿼리 또는 기타 기술을 통해 정보에 액세스하는 방법에 대한 포인터 또는 링크가 있습니까?

도움이 되었습니까?

해결책

Kragen에게 감사합니다. Explorer의 GAC View의 베니어 아래에 System.io 네임 스페이스를 쿼리 할 수있는 파일이 존재했습니다. 운 좋게도 각 서버에 대한 네트워크 액세스 권한이 있습니다.

단일 어셈블리를 위해 많은 서버의 GAC에 존재했던 버전을 쿼리해야했습니다. 완전한보고 신청과는 거리가 멀지 만,이 스 니펫은 내 목적을 훌륭하게 사용했습니다.

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마다 한 번 호출 할 수 있으며 IP, DLL 이름, 어셈블리 버전 및 파일 버션을 콘솔로 인쇄 할 수 있습니다.

이 코드를 자유롭게 가져 와서 자신의 목적을 위해 수정하십시오.

다른 팁

기본 GAC보기를 비활성화하여 레지스트리에서 일반 탐색기보기로 전환 할 수 있습니다. 다음 값을 1로 설정하십시오.

HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion\

(원천 http://sqlmusings.wordpress.com/2007/11/17/how-to-disable-gac-view/)

그런 다음 일부 폴더 비교 도구를 사용하거나 폴더 이름에서 어떤 어셈블리가 있는지 확인할 수 있습니다.

참고 - 이것은 탐색기보기를 끄지 만 파일 시스템과의 다른 상호 작용 지점 (예 : C#의 파일 개체 또는 명령 프롬프트)이 이미이 뷰를보고 있으므로이 레지스트리 키를 모든 내에서 설정할 필요가 없을 것입니다. 서버.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top