複数のサーバーのGAC比較ツール?
-
16-09-2019 - |
質問
誰も私が私のWebファーム内のすべてのサーバー上の.NET GACにインストールアセンブリのレポートを生成することができるようになるツールを知っていますか? (30~40サーバ)
または代わりに、誰もがポインタまたはWMI経由でプログラム的に情報にアクセスするためのいくつかの方法のリンク、またはリモートレジストリクエリ、または他のいくつかの技術を持っていますか?
解決
おかげKragen、エクスプローラのGACビューのベニヤの下に、私は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に1回呼び出され、コンソールにIP、DLLの名前、アセンブリのバージョン、およびファイルバージョンを出力することができます。
このコードを取り、あなた自身の目的のために変更すること自由に感じています。
他のヒント
あなただけの1に次の値を設定し、レジストリ内の通常のエクスプローラビューにそれを回すために、デフォルトGACの表示を無効にすることができます:
HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion\
(出典ます。http:// sqlmusings。 wordpress.com/2007/11/17/how-to-disable-gac-view/する)
これで、単にいくつかのフォルダ比較ツールを使用するか、または単にアセンブリはフォルダ名から存在しているかを作業することができます。
FYI - これはただのエクスプローラビューをオフにし、しかしファイルシステム(たとえば、C#でのFileオブジェクト、またはコマンドプロンプト)との相互作用の他の点はすでにこのビューを参照してくださいので、おそらく、このレジストリキーを設定する必要がイマイチすべてのサーバーでます。