Visual Studio Quick Fix 可以与用户或主机交互吗?

Can a Visual Studio Quick Fix interact with user or host?

我们正在创建一个带有快速修复的 Analyzer,如果我们可以与用户互动就更好了

例如我们想要打开一个网站,显示一个表单(例如一个向导)或者获取一个主机实例(通过 DTE)

例如,当 Visual Studio 显示气泡而不是快速修复时,我们要打开一个表单:

我们可以做类似的事情,或者分析器 运行 在 Visual Studio 2015 年使用沙箱?

我认为您无法通过 analyzer/diagnostic 方法做到这一点。 (我一直在等待回复,以防万一有人知道可能想要回复)。

不过,我相当确定您可以通过 "Light Bulb Suggestion" 完成您想做的事情。灯泡建议比分析器稍微复杂一些,但更可定制。

可以在 MSDN 上找到完整的演练:Walkthrough: Displaying Light Bulb Suggestions

特别是,您应该看看 GetPreviewAsync。它们的实现如下:

public Task<object> GetPreviewAsync(CancellationToken cancellationToken)
{
    var textBlock = new TextBlock();
    textBlock.Padding = new Thickness(5);
    textBlock.Inlines.Add(new Run() { Text = m_upper });
    return Task.FromResult<object>(textBlock);
}

在这种情况下,他们正在 return 创建一个 TextBlock,但此时您应该可以 return 您的自定义表单。

您还必须实施 ISuggestedAction 中的其他方法来连接所有内容。

您实际上可以看到所有与 Roslyn 相关的灯泡操作都实现了 ISuggestAction。它们的实现在 SuggestedAction class.

中可用