Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从给定程序集中获取所有引用的程序集(使用Roslyn或通过反射)_C#_Reflection_Roslyn_Solution_Csproj - Fatal编程技术网

C# 从给定程序集中获取所有引用的程序集(使用Roslyn或通过反射)

C# 从给定程序集中获取所有引用的程序集(使用Roslyn或通过反射),c#,reflection,roslyn,solution,csproj,C#,Reflection,Roslyn,Solution,Csproj,我正在使用Roslyn对解决方案进行一些代码分析,解决方案中的一些项目引用了第三方程序集 有没有办法通过Roslyn或反射检索引用程序集的列表 例如,我有Solution={ProjA,ProjB,ProjC}和ProjC引用第三方程序集={3rdX,3rdY}=>我想得到3rdX和3rdY程序集 3rdX、3rdY程序集不是解决方案的一部分:例如,它们可以是Nuget加载的第三方程序集。如果您有权访问程序集对象(对于程序集A,让我们调用它),则该程序集上有一个名为GetReferencedAs

我正在使用Roslyn对解决方案进行一些代码分析,解决方案中的一些项目引用了第三方程序集

有没有办法通过Roslyn或反射检索引用程序集的列表

例如,我有Solution={ProjA,ProjB,ProjC}和ProjC引用第三方程序集={3rdX,3rdY}=>我想得到3rdX和3rdY程序集


3rdX、3rdY程序集不是解决方案的一部分:例如,它们可以是Nuget加载的第三方程序集。

如果您有权访问程序集对象(对于程序集A,让我们调用它),则该程序集上有一个名为GetReferencedAssembly的方法,该方法将返回一个包含程序集A引用的所有程序集的数组。那可能对你有帮助?抱歉,只是要澄清一下,它返回的是AssemblyName对象数组,而不是AssemblyObjects数组。但是,如果您正在运行应用程序,您应该能够。当您作为外部工具执行此操作时,可能会遇到问题,而只有引用时,程序集解析的行为可能会有所不同。在roslyn中,如果您有一个表示项目JC的对象,则可以检索全部或全部@GeorgeAlexandria项目对象,该对象仅提供解决方案中引用的项目,不是第三方网络组件=>这是我需要的。