问题标签 [resharper-sdk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何使用 Resharper SDK 从 IClrDeclaredElement 获取 IDeclaredType
我正在为 Resharper 编写一个导航插件,我的情况是我有一个IDeclaredElement
我从中获得的列表
此元素是用户将鼠标光标置于其上的元素。
我想做的是获取IDeclaredType
声明元素的 ,包括它可能具有的任何类型参数,如果它是泛型类型。
resharper SDK 文档在涉及类型系统时非常简单,根本没有真正解释各种类型之间的关系。
我一直在寻找其他插件以尝试找到这方面的示例,但结果都是空的。我已经检查了每一个 Util 和 Extension 类,看看是否有一个方法可以给我想要的东西,但是没有。
我发现的唯一一件事是:
它返回类型层次结构,不包括当前类型。有用,但不是我想要的。
是否有人对此 API 有任何经验或了解它的工作原理?我喜欢一个能更多解释类型之间关系的答案。
我对它的理解,简单来说:
- 名称中带有Declared
(IDeclaredElement, IDeclaredType)
的类型 似乎是指物理代码元素。 - IType 似乎是所有类型的顶级接口,与物理代码元素不对应
- 我不清楚名称中带有 Element 的类型的含义
(ITypeElement, IDeclaredElement)
,也许它指的是 AST 元素。
我希望对此进行一些澄清。
c# - 获取当前项目中的所有 IDeclaredType-s(用于 ReSharper Generator 插件)
我正在编写一个 ReSharper 7.1 Generator 插件,需要获取当前项目中声明的所有类型(类、接口和结构 - IDeclaredType-s
)的列表GeneratorProviderBase<CSharpGeneratorContext>.Populate
。
使用常规反射,它会像 一样简单Assembly.GetTypes()
,但在这里它被证明是一个相当大的挑战。有没有办法做到这一点?
我搜索了高低,文档和示例没有帮助,然后查看了每个*Extensions
课程*Util
,但找不到任何有用的东西......
resharper - SearchDomainFactory.Instance 已过时:“注入我!” (不知道如何创建实例)
我正在尝试将 R# 扩展项目从 R# 6 迁移到 R# 8。(我已经接管了某人编写的项目,而且我是编写扩展的新手。)
在现有的 v6 项目中,有一个派生自 RenameWorkflow 的类,构造函数过去看起来像这样;
这曾经在 R# SDK v 6 中工作,但现在在 V8 中,RenameWorkflow 不再具有采用 Solution 和 actionId 的构造函数。新的构造函数签名现在看起来像这样;
现在这是我需要帮助的问题(我认为)
我已经复制了构造函数,现在这个类的构造函数必须满足这些新的依赖关系。通过一些挖掘,我设法找到了一种方法来满足所有依赖项,除了'SearchDomainFactory'。我可以通过更新的构造函数进行实例化的最接近如下;
新的 RenameStepWorkflow(Solution.Locks,JetBrains.ReSharper.Psi.Search.SearchDomainFactory.Instance,RenameRefactoringService.Instance,this.Solution,null)
一切看起来都不错,除了JetBrains.ReSharper.Psi.Search.SearchDomainFactory.Instance
标记为过时,并且给了我一个我无法解决的编译错误,即使使用#pragma
也不允许我编译代码。我编译时得到的确切错误消息是Error 16 'JetBrains.ReSharper.Psi.Search.SearchDomainFactory.Instance' is obsolete: 'Inject me!'
明显的下一个问题..好的,怎么样?我如何“注入你”?我找不到关于这个新的重大更改的任何文档,事实上,我找不到任何文档(或示例项目)甚至提到DrivenRefactoringWorkflow
或RenameWorkflow
,(现在需要新 SearchDomainFactory 的类),或任何关于SearchDomainFactory.Instance
突然过时的信息以及如何满足“注入”它的需要。
非常感激任何的帮助!谢谢,
问候
艾伦
resharper-plugins - ReSharper 插件测试中的任意检查
正如我从 DevGuide 中了解到的,测试 ReSharper 插件的工作方式如下:
- 加载插件并将测试输入文件传递给它
- 插件对传递的文件执行其操作
- ReSharper 的测试环境将插件操作结果以特殊格式写入 .tmp 文件,该格式取决于测试的功能类型(例如,如果我们测试完成,.tmp 文件将包含生成的完成项列表)
- ReSharper 的测试环境将 .tmp 文件与 .gold 文件进行比较,以确定测试是失败还是成功
但我需要以下场景。前两步同上,则:
- 我编写代码来获取插件操作的结果并检查它们是否符合我的预期,以便在需要时使测试失败
我怎样才能做到这一点?
我需要它,因为我有一个使用 ReSharper 生成的 AST 来构建一些图表的代码,我想测试这些图表是否正确构建。
resharper - Extend ReSharper's Unit Test Sessions window
Is it possible to extend (eg. add a menu item to a context menu in) ReSharper's Unit Test Sessions window?
What I'd like to achieve is to be able to select one or more tests and then apply a custom category attribute to those tests (eg. modify the respective test's method or class to add an attribute like [NeedsFixing]
.
c# - 如何防止 ReSharper 在生成代码时为内置类型添加“@”符号前缀?
我正在编写一个 ReSharper 插件,我想这样做:
我想输出代码:
但它实际上输出了这个:
它似乎是这样做的int
(我假设其他内置类型或关键字)。
如何防止它这样做并输出有效代码?
visual-studio-2012 - 将 Resharper 9.2 插件部署为 dll
对于 Resharper 7.1,我们编写了一个 Resharper 插件 - 放置在C:\Users\<UserName>\AppData\Roaming\JetBrains\ReSharper\vAny\Plugins
文件夹中。在 VS 2012 中,该插件可以正常工作。
该插件的目的是分析当前打开的C#文件,检查我们公司的文件头是否写在页面顶部。如果不是,它将突出显示整个内容。
现在我们切换到 Resharper 9.2。我针对nuget下载的Resharper 9.2 SDK成功编译了源代码。但是我没有得到 Resharper 识别/工作的 Resharper 插件。
插件的放置位置有什么变化吗?我阅读了一些关于创建 nuget 包的建议——但这一步真的有必要吗?
我想学习如何让插件运行。
c# - 上下文操作的 ReSharper SDK 测试不起作用
我尝试使用 ReSharper SDK 内置测试基础设施测试我的自定义 ReSharper 上下文操作。我创建了一个输入文件、一个输出文件 ( .gold
) 并运行测试。出现两个问题:
- 测试总是成功的(即使输入和
.gold
文件完全不同,或者为空等); - 没有
.tmp
文件与输入和.gold
文件一起出现。
但是,如果我重命名输入文件,则测试运行会失败,并出现“文件不存在”异常。
我的测试项目的结构与docs中描述的相同。
测试环境.cs:
测试类:
我为简单的快速修复做了类似的测试。.gold
该测试按预期工作,并对输入或文件的任何更改做出反应。所以问题是如何正确测试上下文动作。
使用 ReSharper SDK 9.2。
c# - 如何从 IType (Resharper 8 SDK) 获取 Type 实例
我正在尝试编写我的第一个 ReSharper 扩展,但遇到了以下问题:
如何从它的 IType 描述符中获取已解析的类型?
作为背景,我正在尝试编写一个分析器,该分析器使用一种工具来测试两种类型参数的兼容性。
到目前为止,我有这个
c# - 如何在 ReSharper 扩展中获得构建的结果
我想编写一个 ReSharper 扩展,在每次构建后执行一个操作,所以我想我需要首先知道构建何时完成,并了解构建是否成功
关于如何做到这一点的任何提示?
(我对扩展完全陌生)提前谢谢