我想在运行时找到一组程序集的依赖关系,我注意到我的代码暗示System.dll有一个System.Configuration.dll循环引用。我假设在这些程序集之间并没有实际的循环引用,但是有人可以解释为什么我从代码中看到以下结果?.Net程序集中的循环引用
var systemAssembly = Assembly.ReflectionOnlyLoadFrom("System.dll");
Console.WriteLine(systemAssembly.GetReferencedAssemblies().Select(a => a.FullName));
// Output:
// mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
var systemConfigurationAssembly = Assembly.ReflectionOnlyLoadFrom("System.Configuration.dll");
Console.WriteLine(systemConfigurationAssembly.GetReferencedAssemblies().Select(a => a.FullName));
// Output:
// mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
注意:在我的例子中,装配路径已经被简化了。
我看不到关于循环引用的任何消息。你能发布所有相关的代码和错误消息吗? –
这里没有什么错,循环依赖是允许的,它们只是[编译时的痛苦](http://stackoverflow.com/q/1316518/3764814) –
@ rory.ap所提供的代码没有错误。输出结果显示这些dll相互引用,这意味着有一个循环依赖关系使我困惑。 –