微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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共享托管,因此可能适用于您的托管环境.

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

原文地址:https://www.jb51.cc/csharp/96175.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐