提问人:user3797758 提问时间:11/30/2022 最后编辑:user3797758 更新时间:11/20/2023 访问量:128
C# 源生成器诊断文档页链接
C# Source Generator diagnostic documentation page link
问:
我编写了一个创建错误的源代码生成器,我希望能够通过访问文档页面为用户提供有关他们遇到的特定错误的更多信息。
幸运的是,DiagnosticDescriptor 有一个字段,描述如下:helpLinkUri
一个可选的超链接,提供有关诊断的更详细描述。
但是当我尝试通过设置为像 这样的测试网站来使用它时,或者我被发送到 https://learn.microsoft.com/en-us/visualstudio/ide/not-in-toc/default 这不是我设置的。这是在使用 Visual Studio 并在错误面板中单击错误代码时。helpLinkUri
google.com
http://google.com
https://google.com
www.google.com
如何打开用于源生成器诊断的自定义网页?是否有任何文档未提及的限制?这是 Visual Studio 中存在的限制吗?
代码示例:
private static void ErrorMessage(SourceProductionContext _arg1, AttributeSourceWithContext _arg2)
{
DiagnosticDescriptor errorType = new DiagnosticDescriptor(
id: "Error1",
title: "Incorrect line",
messageFormat: "This is complex, open help link for good explanation",
helpLinkUri: "google.com", // <----- this is not opened when inspecting the error
defaultSeverity: DiagnosticSeverity.Warning,
isEnabledByDefault: true);
Diagnostic errorInstance = Diagnostic.Create(errorType, _arg2.GetLocation());
_arg1.ReportDiagnostic(errorInstance);
}
答:
我也有同样的问题。
还有一种链接将写在消息后面的“说明”列中。如果单击它,Visual Studio 将崩溃。
正如你可能知道的那样,在 Visual Studio 中使用源生成器时,它们并不总是按照编码的方式运行。
不要害怕——
尝试清理解决方案,生成,重启 Visual Studio,然后 重新生成解决方案。
这些是编码源生成器的四骑士。
第一次构建或重建时,将发生生成器的某种缓存。
您有时会注意到这一点,如果您开始编码并在生成器中编辑 LiteralString 值,则最终文档中的更改并不总是立即发生。
但是,在生成器所针对的文件中进行编辑,几乎会立即更改最终结果 - 当然,当生成器工作时。
最后,我让它使用:
new DiagnosticDescriptor(
"ErrorCodeXXXX",
"Dumb code title",
"The code right here is dumb and dont always work as intended.",
"DumbFeatureError",
DiagnosticSeverity.Error,
true,
helpLinkUri: "https://DocLink.Domain/InternalDoc")
编辑: 现在我再次查看您的代码,也可能是因为您的 URL 中没有“https://”。
评论
https://
评论
Google.com