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.
中可用
我们正在创建一个带有快速修复的 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.