GetReferencedAssemblies不返回所有程序集

时间:2010-08-08 10:32:56

标签: .net reflection

我在Form中有以下代码,并且我试图找到一种方法来加载由DataObjects形式引用的项目程序集。使用以下代码,我只列出了六个程序集。查看表单所在项目的引用,有十三个程序集引用。这有什么不对?

private void ListReferencedAssemblies()
{
    var assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
    foreach (var assembly in assemblies)
    {
        referencesListBox.Items.Add(assembly.Name);
    }
} 

2 个答案:

答案 0 :(得分:33)

请您检查一下程序集的清单,看看这里引用了什么?

如果不使用C#编译器,它往往会从清单中删除引用的程序集。因此,如果您没有引用程序集B中的任何类型或仅引用程序集B中的常量(由编译器内联),那么您将不会有此引用。

答案 1 :(得分:7)

编译器不会在输出程序集中包含实际上未在代码中使用的程序集引用。

只有在代码中使用的程序集才会在输出程序集中引用。