Roslyn ImportAdderService不访问琐事

时间:2015-06-10 15:08:01

标签: c# roslyn

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

我遇到的最大问题是简化会导致结果不一致。假设您有多个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;
  }
}

应用ImportAdderServiceSimplifier后:

using System.Collections;

namespace Namespace
{
  /// <summary>
  /// <see cref=""IEnumerable"" />
  /// <see cref=""System.Collections.Generic.IEnumerable{T}"" />.
  /// </summary>
  internal class MyDeclaration
  {
    IEnumerable Field;
  }
}

问题

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

或者甚至是设计呢?

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

0 个答案:

没有答案