3
我正在寫一個Roslyn診斷分析器。在我註冊任何其他操作之前,我想告訴System.Collections.Immutable
是否在RegisterCompilationStartAction
中被引用。這是我到目前爲止的方式:Roslyn:如何判斷某個特定程序集是否在編譯中被引用?
context.RegisterCompilationStartAction(compilationStartContext =>
{
var compilation = compilationStartContext.Compilation;
if (compilation.GetTypeByMetadataName("System.Collections.Immutable.ImmutableArray`1") == null)
{
return;
}
...
});
這可行,但我不覺得這是最乾淨的方式來做到這一點。我可以以某種方式獲得對應於程序集名稱的MetadataReference
,並檢查它是否爲空,如GetMetadataReference("System.Collections.Immutable") == null
? (GetMetadataReference
不接受一個字符串,所以這實際上不起作用。)如果沒有,其他更清潔的方式來做到這一點,不涉及挑選特定類型?謝謝。