如何在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共享托管,因此可能适用于您的托管环境.
可以通过在每个程序集的文件夹中更深入地列出版本号和公钥令牌来进行修饰.