.net 多服务器的GAC比较工具?
是否有人知道有一种工具可以让我生成web场中所有服务器上安装到.NET GAC的程序集的报告?30-40台服务器.net 多服务器的GAC比较工具?,.net,gac,remote-administration,.net,Gac,Remote Administration,是否有人知道有一种工具可以让我生成web场中所有服务器上安装到.NET GAC的程序集的报告?30-40台服务器 或者,是否有人在通过WMI、远程注册表查询或其他技术以编程方式访问信息时有指针或链接?您可以禁用默认GAC视图,将其转换为注册表中的普通资源管理器视图,只需将以下值设为1: HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion\ 来源 然后,您可以使用一些文件夹比较工具,或者从文件夹名称中计算出存在哪些程序集 仅供参考-这只是关闭了explore
或者,是否有人在通过WMI、远程注册表查询或其他技术以编程方式访问信息时有指针或链接?您可以禁用默认GAC视图,将其转换为注册表中的普通资源管理器视图,只需将以下值设为1:
HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion\
来源
然后,您可以使用一些文件夹比较工具,或者从文件夹名称中计算出存在哪些程序集
仅供参考-这只是关闭了explorer视图,但是与文件系统的其他交互点(例如C中的文件对象)或命令提示符已看到此视图,因此,可能不需要在所有服务器上设置此注册表项。您可以禁用默认GAC视图,将其转换为注册表中的普通浏览器视图,只需将以下值设置为1:
HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion\
来源
然后,您可以使用一些文件夹比较工具,或者从文件夹名称中计算出存在哪些程序集
仅供参考-这只是关闭了explorer视图,但是与文件系统的其他交互点(例如C中的文件对象)或命令提示符已经看到了此视图,因此可能不需要在所有服务器上设置此注册表项。感谢Kragen在explorer的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调用一次,并将IP、DLL名称、程序集版本和文件版本打印到控制台
请随意使用此代码并根据自己的目的进行修改。感谢Kragen,因为他暗示在Explorer的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调用一次,并将IP、DLL名称、程序集版本和文件版本打印到控制台
请随意使用此代码并为您自己的目的进行修改。谢谢您的帮助-我一直在经历一段可怕的时间,让我的web服务器彼此保持同步,这将非常有帮助!谢谢你-我一直在经历一段可怕的时间来保持我的web服务器之间的同步,这将很有帮助!