c# – 枚举GAC中的程序集

如何在C#中枚举GAC中的所有可用程序集?

实际上我面临着一个愚蠢代码的问题 – 在项目中引用并使用了名为Telerik.Web.UI.dll的程序集 – 这个特定的DLL不存在于BIN文件夹中.应用程序在服务器上工作正常 – 但是在我的机器上,显然编译器出现错误. Ex-Developer坚持认为它不在服务器上的GAC中,而是“它是什么”.现在我需要检查这个DLL是否在GAC中注册.

帮助将不胜感激

美好的一天;

解决方法

如果您对服务器的访问有限,那么这可能会起作用:
// List of all the different types of GAC folders for both 32bit and 64bit
// environments.
List<string> gacFolders = new List<string>() { 
    "GAC","GAC_32","GAC_64","GAC_MSIL","NativeImages_v2.0.50727_32","NativeImages_v2.0.50727_64","NativeImages_v4.0.30319_32","NativeImages_v4.0.30319_64"
};

foreach (string folder in gacFolders)
{
    string path = Path.Combine(
       Environment.ExpandEnvironmentvariables(@"%systemroot%\assembly"),folder);

    if(Directory.Exists(path))
    {
        Response.Write("<hr/>" + folder + "<hr/>");

        string[] assemblyFolders = Directory.GetDirectories(path);
        foreach (string assemblyFolder in assemblyFolders)
        {
            Response.Write(assemblyFolder + "<br/>");
        }
    }
}

它基本上列举了原始的GAC文件夹.它适用于discountASP共享托管,因此可能适用于您的托管环境.

可以通过在每个程序集的文件夹中更深入地列出版本号和公钥令牌来进行修饰.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...