使用.NET编译器平台SDK模板(https://visualstudiogallery.msdn.microsoft.com/849f3ab1-05cf-4682-b4af-ef995e2aa1a5)
时使用Code Fix创建一个Roslyn诊断程序,我得到一个NuGet包和一个VSIX - 如自述文件所述:
"构建此项目将生成一个分析器.dll,以及您可能希望打包该分析器的以下两种方式:
一个NuGet包(.nupkg文件),它将您的程序集添加为参与构建的项目本地分析器。
VSIX扩展名(.vsix文件),它将您的分析器应用于所有项目,并且仅在IDE中工作。"
现在出现以下情况:如果两者都已安装 - 作为项目的一部分的NuGet(例如,该项目的公司政策),开发人员本地安装的VSIX部分(例如,她也获得了其他项目的分析器) 。截至今天,建议将针对上述情况显示两次。
我能以某种方式告诉VS2015两者(NuGet / VSIX)实际上是相同的(它只运行一次)吗?或者是一种优先用于部署的方法(例如NuGet)而另一种方法(VSIX)仅用于调试诊断(比NuGet更方便)?对此有一些官方指导吗?
(注意:我在NR6Pack上工作)
答案 0 :(得分:5)
我们最近根据分析仪名称进行了统一更改。因此,在VSIX分析器和Project分析器都具有相同AssemblyName的情况下,它只会运行一次,并且只会在错误列表中报告一次问题。此更改应显示在VS2015的下一次更新中(尽管不幸的是它没有进入最近发布的VS 2015 CTP5)。
关于NuGet vs VSIX作为部署机制的选择:
我想象的方式是大多数规则应该通过NuGet部署并在团队级别强制执行,但个人偏好的规则应该通过VSIX来部署。