我正在实施一个系统,它将实现代码质量,作为内部质量度量的一部分。我以两种可能的实现方式构建了该系统,如下所示:
实现1:(已实现)
AutoUpdate特性通过验证其版本号来检查其自身和其他CodeQuality插件的任何更新。一旦CodeQuality插件被更新,它将在接下来的7天内停止更新。
这是我目前对实现的想法,但是开发暂停了,并引用了与此实现中的扩展数量有关的性能问题,并且它的使用/性能可能有Visual的限制(正如团队所提到的)。
实现2:(建议)
在这种情况下,更新功能是单独触发的,并保持单一的责任理念。
我不确定AutoUpdate项目(它使用菜单命令模板)和C#/VB /DiagnosticAnalyzer项目(Roslyn )是否能共存?
实现3:(意见之一)
我甚至不确定这三个是否能在一个单独的V6中共存。
因此,我的问题是,在上述三种场景中,性能问题可能是什么,以及如何将基于Roslyn模板开发的插件实现为visual的普通菜单命令模板扩展。
-编辑-总结需求如下
- Single VSIX
- Maximum 2 VSIXs
发布于 2014-08-13 22:00:10
Roslyn和VSIX包装的注意事项:
As https://roslyn.codeplex.com/discussions/549445 by https://www.codeplex.com/site/users/view/srivatsn
Microsoft.CodeAnalysis.CSharp和Microsoft.CodeAnalysis.VisualBasic的扩展将- Load both the compilers even if we try to open a C# project, this is not ideal.
ISymbolAnalyzer,在这里您只分析符号而不是语法节点,那么我们应该采用单一的语言无关分析器。这意味着我们不需要引用任何C#/VB (甚至微软也在考虑实现更多语言无关的分析器)。包含两个导出属性--每个语言一个,这些属性告诉VS在解决方案中包含相应语言时实例化和调用这些分析器。As http://blogs.msdn.com/b/ericlippert/archive/2012/06/08/persistence-facades-and-roslyn-s-red-green-trees.aspx by https://www.codeplex.com/site/users/view/VSadov
As https://stackoverflow.com/questions/25262618/can-multiple-vsix-with-vb-c-diagnostic-analyzer-codefix-autoupdate-cause-perfo/25270233#comment39362585_25262618 by https://stackoverflow.com/users/34397/slaks
As https://stackoverflow.com/questions/25262618/can-multiple-vsix-with-vb-c-diagnostic-analyzer-codefix-autoupdate-cause-perfo#comment39383014_25270233 by https://stackoverflow.com/users/678625/kevin-pilch-bisson
- Shared (_No language specific binaries in it_)
- C# specific (_+ shared libraries_)
- VB Specific (_+ shared libraries_)
ContentType或LanguageName,那么上述问题就可以得到解决。最后执行:
因此,在与我的团队讨论后,我最终得出了如下结论:
- C# plugin
- Implements and refers only rules for C#
- VB Plugin
- Implements and refers only rules for VB
发布于 2014-08-12 17:14:51
不是的。
唯一真正的“性能问题”是将C#和VB放在同一个程序集中(注意,而不是VSIX),这意味着当我们必须加载一个程序集时,加载其他程序集。
从MEF的角度来看,我们只是得到了一份出口清单:我们不知道它们来自哪个VSIXes,即使我们想要,也很难搞清楚。因此,您将哪些内容放入VSIX并不重要:根据对用户有意义的内容来划分它们。
https://stackoverflow.com/questions/25262618
复制相似问题