Razor 对自定义剃须刀指令的ReSharper支持

Razor 对自定义剃须刀指令的ReSharper支持,razor,resharper,Razor,Resharper,我通过重写WebRazorHostFactory、MvcWebPageRazorHost和相关类来扩展MVC3,以创建一个自定义指令(如@model),该指令将视图的基类更改为从WebPageBase派生的自定义类,并将向其添加第二个通用参数。一切正常,类正确生成;但是,ReSharper不承认新指令。有没有办法扩展ReSharper来认识到这一点?James,理论上,使用ReSharper SDK是可能的。 但它将是相当核心的插件,与许多子系统相关。 如果您愿意朝这个方向采取行动,我们可以帮助

我通过重写WebRazorHostFactory、MvcWebPageRazorHost和相关类来扩展MVC3,以创建一个自定义指令(如@model),该指令将视图的基类更改为从WebPageBase派生的自定义类,并将向其添加第二个通用参数。一切正常,类正确生成;但是,ReSharper不承认新指令。有没有办法扩展ReSharper来认识到这一点?

James,理论上,使用ReSharper SDK是可能的。 但它将是相当核心的插件,与许多子系统相关。
如果您愿意朝这个方向采取行动,我们可以帮助您回答特定的问题。

理论上,您可以为ReSharper编写这样的插件。但这很复杂,结果也不能保证。准备好用DotPeek阅读ReSharper的代码。您可以从查看RazorModelDirective、RazorSharpMVcLanguage和RazorSharpMVcLanguageService开始。您需要创建类似于这些的类。

在深入研究反编译代码一段时间后,我似乎还需要从头开始编写自己的Razor.lex文件。此外,很难理解反编译代码,因为它似乎大量使用常量,而这些常量在编译时会丢失。是否有可能获得一份MVC/Razor特定的源代码副本(包括.lex文件),我可以从中创建我的插件?我不确定是否有完整的源代码,但我们当然可以在需要时提供一些代码示例。写信给我,我在jetbrains.com上的邮件是Dmitry.Osinovsky(与我的SO帐户名不同的一个字母)。