我想在運行時找到一組程序集的依賴關係,我注意到我的代碼暗示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相互引用,這意味着有一個循環依賴關係使我困惑。 –