如何获取我可以在机器上引用的所有组件的列表?

时间:2012-04-13 07:44:33

标签: c#

要在Visual Studio中为项目添加新的.NET引用,只需在当前项目的引用上单击“添加引用...”,切换到“.NET”选项卡并继续操作。

现在,有没有办法以编程方式获取此列表?

3 个答案:

答案 0 :(得分:3)

//您需要访问GAC

List<string> gacFolders = new List<string>() { 
    "GAC", "GAC_32", "GAC_64", "GAC_MSIL", 
    "NativeImages_v2.0.50727_32", 
    "NativeImages_v2.0.50727_64" 
};

foreach (string folder in gacFolders)
{
    string path = Path.Combine(@"c:\windows\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/>");
        }
    }
}

来源:enumerating assemblies in GAC

答案 1 :(得分:0)

使用gacutil访问全局程序集缓存,或使用this msdn page上介绍的包装器。

答案 2 :(得分:0)

我会选择固定路径,因为它可能会发生变化,但仍然可以使用

GacUtil

例如,从命令行可以使用

gacutil /l > assemblylist.txt 

assemblylist.txt将包含GAC中所有程序集的列表,其中包含您需要的所有信息。


或者可以尝试使用

GAC Api(没有记录)你需要对此进行一些互操作,它不是C#。

可以尝试使用此C#warpper

GAC API Interface