Roslyn ImportAdderService不访问琐事

Mat*_*ias 9 c# roslyn

Microsoft.CodeAnalysis.Editing.ImportAdderService.AddImportsAsync方法仅访问非琐事语法节点,因此不会为它们添加命名空间导入.这导致了结果,当使用时,xml文档注释中的cref不能简化为它们的短名称Microsoft.CodeAnalysis.Simplification.Simplifier.

我遇到的最大问题是简化会导致结果不一致.假设您有多个cref,并且对于一个cref,您有一个名称空间导入(由于另一种类型引入,实际上在非琐事节点中使用).然后,这一个cref缩短了,而其他的则没有.

为了澄清.

申请之前ImportAdderServiceSimplifier:

namespace Namespace
{
  /// <summary>
  /// <see cref=""System.Collections.IEnumerable"" />
  /// <see cref=""System.Collections.Generic.IEnumerable{T}"" />.
  /// </summary>
  internal class MyDeclaration
  {
    System.Collections.IEnumerable Field;
  }
}
Run Code Online (Sandbox Code Playgroud)

申请后ImportAdderServiceSimplifier:

using System.Collections;

namespace Namespace
{
  /// <summary>
  /// <see cref=""IEnumerable"" />
  /// <see cref=""System.Collections.Generic.IEnumerable{T}"" />.
  /// </summary>
  internal class MyDeclaration
  {
    IEnumerable Field;
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以解决这个问题吗?我们肯定希望为cref标签中引用的所有类型添加使用.

或者甚至是设计?

我想这确实是一个缺失的功能,告诉ImportAdderService访问trivia语法节点.