gpt4 book ai didi

c# - 使用 Roslyn 创建诊断分析器时缺少包

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:22 25 4
gpt4 key购买 nike

澄清一下:我使用的是 Visual Studio 2013 Ultimate,Update 2

我正在尝试使用 Roslyn 创建一个诊断分析器。

诊断分析器的示例代码(位于 here 以这种方式声明这样的分析器:

[DiagnosticAnalyzer(LanguageNames.CSharp)]
internal class DiagnosticAnalyzer : Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer

但是,当我尝试重新创建它时,我在 Microsoft.CodeAnalysis.Diagnostics 中找不到类 DiagnosticAnalyzer(但是 IDiagnosticAnalyzer 确实存在于相同的命名空间)。

StackOverflow 上的一些示例改为使用(例如 this one)

[DiagnosticAnalyzer]
[ExportDiagnosticAnalyzer(DiagnosticId, LanguageNames.CSharp)]
internal class DiagnosticAnalyzer : ISyntaxTreeAnalyzer

但是在这种情况下,我找不到 ExportDiagnosticAnalyzer 属性。看来我错过了一个集会。我使用 NuGet 安装了以下软件包:

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl.Immutable" version="1.1.20-beta" targetFramework="net45" />
<package id="Microsoft.Bcl.Metadata" version="1.0.12-alpha" targetFramework="net45" />
<package id="Microsoft.CodeAnalysis" version="0.7.4091001-beta" targetFramework="net45" />
<package id="Microsoft.CodeAnalysis.Common" version="0.7.4091001-beta" targetFramework="net45" />
<package id="Microsoft.CodeAnalysis.CSharp" version="0.7.4091001-beta" targetFramework="net45" />
<package id="Microsoft.CodeAnalysis.CSharp.Workspaces" version="0.7.4091001-beta" targetFramework="net45" />
<package id="Microsoft.CodeAnalysis.VisualBasic" version="0.7.4091001-beta" targetFramework="net45" />
<package id="Microsoft.CodeAnalysis.VisualBasic.Workspaces" version="0.7.4091001-beta" targetFramework="net45" />
<package id="Microsoft.CodeAnalysis.Workspaces.Common" version="0.7.4091001-beta" targetFramework="net45" />
</packages>

据我所知,也通过检查示例中的 packages.config,应该是我需要的一切。

当我检查我的 C# 项目的引用时,我引用了以下非标准程序集:

  • Microsoft.CodeAnalysis
  • Microsoft.CodeAnalysis.CSharp
  • Microsoft.CodeAnalysis.CSharp.Desktop
  • Microsoft.CodeAnalysis.CSharp.Workspaces
  • Microsoft.CodeAnalysis.Desktop
  • Microsoft.CodeAnalysisWorkspaces
  • 微软.CSharp

我的问题是,我找不到创建诊断分析器所需的所有类,我错过了什么?

最佳答案

所以一两个月前,我们完全更改了用于执行分析器的 API。 (别担心,这是值得的:新的 API 更好很多。)当您查看 CodePlex 中的当前源代码时,您会看到新的东西,我们甚至还没有在 NuGet 上发布它。我强烈建议您使用 Visual Studio“14”CTP 并下载与之匹配的模板,这将使您在应该工作的地方进行设置。尝试将当前的 NuGet 包用于旧的预览会导致悲伤。

ExportDiagnosticAnalyzer 已过时,[DiagnosticAnalyzer] 属性现在已足够。

关于c# - 使用 Roslyn 创建诊断分析器时缺少包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26614915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com