如何禁用 C# 项目中灯泡后显示的预览对话框?
我遇到的问题是,RegisterCodeFixesAsync 调用数据库并递增 id,这是完成两次(一次是在预览期间,第二次是在调用操作时),而不是只递增一次,id 递增两次
最佳答案
CodeAction
具有单独的 ComputePreviewOperationsAsync()
和 ComputeOperationsAsync()
。让他们返回不同的值(value)是我相信你正在寻找的。但是,如果您使用调用 CodeAction.Create()
的常用方法,两者将返回相同的值。
您可以改为创建一个自定义类,该类继承自 CodeAction
并按您希望的方式覆盖方法。例如:
class NoPreviewCodeAction : CodeAction
{
private readonly Func<CancellationToken, Task<Solution>> createChangedSolution;
public override string Title { get; }
public override string EquivalenceKey { get; }
public NoPreviewCodeAction(
string title, Func<CancellationToken, Task<Solution>> createChangedSolution,
string equivalenceKey = null)
{
this.createChangedSolution = createChangedSolution;
Title = title;
EquivalenceKey = equivalenceKey;
}
protected override Task<IEnumerable<CodeActionOperation>> ComputePreviewOperationsAsync(
CancellationToken cancellationToken)
{
return Task.FromResult(Enumerable.Empty<CodeActionOperation>());
}
protected override Task<Solution> GetChangedSolutionAsync(
CancellationToken cancellationToken)
{
return createChangedSolution(cancellationToken);
}
}
此版本完全禁用预览。另一种选择是使预览采用不同的路径,例如在数据库中查询下一个值,但不更新它。
关于c# - Roslyn 分析器代码修复 - 禁用预览选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435740/