使用.NET Compiler Platform SDK模板(https://visualstudiogallery.msdn.microsoft.com/849f3ab1-05cf-4682-b4af-ef995e2aa1a5)时

创建带有代码修复的Roslyn诊断程序,我同时获得了NuGet包和VSIX-如自述文件所述:

“构建该项目将生成一个分析器.dll,以及您可能希望通过以下两种方式打包该分析器:

  • NuGet软件包(.nupkg文件),它将您的程序集添加为参与构建的项目本地分析器。
  • 一个VSIX扩展名(.vsix文件),它将您的分析器应用于所有项目,并且仅在IDE中工作。”

  • 现在,出现以下情况:如果同时安装了两者,该怎么办– NuGet作为项目的一部分(例如,该项目的公司政策),是开发人员本地安装的VSIX部分(例如,她也为其他项目获得了分析仪)。截至今天,针对上述情况的建议将出现两次。

    我能以某种方式告诉VS2015这两个(NuGet/VSIX)实际上是相同的(并且仅运行一次)吗?还是一种首选部署方法(例如NuGet)而另一种首选用于调试诊断(比NuGet更为方便)的方法(VSIX)?有官方的指导吗?

    (注意:我使用的是NR6Pack)

    最佳答案

    最近,我们根据分析器名称进行了更改以统一。因此,在VSIX分析器和项目分析器都具有相同的AssemblyName的情况下,它将仅运行一次,并且在错误列表中仅报告一次问题。此项更改应显示在VS2015的下一个更新中(不幸的是,它没有纳入最近发布的VS 2015 CTP5中)。

    将NuGet与VSIX作为部署机制的选择:

  • 通过NuGet部署并将分析器附加到项目意味着分析器随项目一起进行源代码管理,因此很容易为团队应用相同的规则。这也意味着命令行版本会报告分析器报告的问题。
  • 部署为VSIX意味着VS中的每个项目以及那些问题都不会通过命令行构建来产生。

  • 我的想象方式是,大多数规则应该通过NuGet部署并在团队级别执行,但是个人喜好的规则可能应该通过VSIXes部署。

    10-07 13:55