问题标签 [resharper-plugins]

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.

0 投票
1 回答
76 浏览

c# - 如何在 ReSharper 插件中创建一个代表封闭泛型类型的“ITypeElement”?

我正在使用 ReSharper 8 sdk 并希望找到特定泛型接口的所有继承者,其中泛型类型是特定类型。我已经问了一个更一般的问题,它已经解决了大部分问题,但我只能找到任何实现,ICommandHandler<T>而不是我想要的一个实现,ICommandHandler<TestCommand>

这是我的代码:

如果我在此行之后提示 commandHandlerType:

var commandHandlerType = TypeFactory.CreateType(genericTypeElement,theType);

我看到正确指定了类型:

泛型类型存在!

但是当我ITypeElement从这种类型中获取到使用这条线传递给我的搜索时

我似乎失去了类型:

通用类型丢失!

所以我的搜索找到了ICommandHandler<T>.

所以我的问题是,如何创建ITypeElement代表我要搜索的封闭泛型类型的?

或者:如何在返回的继承者集合中搜索以我开始的类作为泛型类型参数的类型?

0 投票
2 回答
55 浏览

c# - 如何获取窗口上下文,以便可以在 resharper 插件中创建 NavigationOptions

我有一个导航插件,我想扩展它以支持上下文导航。除了 NavigationOptions 实例之外,我拥有所需的一切。在我的INavigateFromHereProvider我被调用,IDataContext所以可以NavigationOptions使用该NavigationOptions.FromDataContext方法从中创建。伟大的。

在我的上下文操作中,我没有被调用 a ,而是在构造过程中IDataContext得到 a 。ICSharpContextActionDataProvider我可以从中得到我IDeclaredElement的导航决定,但我不确定如何创建我的NavigationOptions实例。感觉我应该使用NavigationOptions.FromWindowContext,但我似乎需要一个PopupWindowContextSource,但我不知道从哪里得到其中一个。

那么我在哪里可以获得相关PopupWindowContextSource的创建我NavigationOptions的?

0 投票
1 回答
59 浏览

c# - 如何防止 ReSharper 在生成代码时为内置类型添加“@”符号前缀?

我正在编写一个 ReSharper 插件,我想这样做:

我想输出代码:

但它实际上输出了这个:

它似乎是这样做的int(我假设其他内置类型或关键字)。

如何防止它这样做并输出有效代码?

0 投票
2 回答
109 浏览

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 包的建议——但这一步真的有必要吗?

我想学习如何让插件运行。

0 投票
2 回答
132 浏览

c# - 如何在 resharper 插件中动态重写 AST?

请求:

我希望能够编写一个分析器,它可以为某个表达式提供代理值并触发对文档的重新解析。

动机:

我们的代码中充斥着 ABTest,它们可以处于已部署或活动状态,并带有控制组和变体组。通过数据库查找来确定测试的状态。对于与控制组一起部署的测试,以下形式的任何语句都将评估为 false:

我正在尝试提供工具,以便在开发时通过在这种情况下将其变灰来更轻松地处理它。事实上,这是相当有限且不健壮的,因为我基本上必须自己玩解析器。

如果实际代码是

或者

或者

我可以看到提供的一种可能的方法是允许我们编写一次触发的分析器并在实际 IDE 解析发生之前重写树(或者,好吧,只是第二次解析它)。这些应该只触发一次,并允许我们用另一个替换某个表达式。这将允许我将所有这些实验调用交换为真假文字。

因此,这些部分可以受益于所有其他 IDE 功能,例如无法访问代码的代码灰色化,但也可以受益于更复杂的功能,例如永远不会有不同值的变量

显然这只是一个例子,我不确定它有多可行。任何关于适当功能或已经存在的东西的建议都非常受欢迎。

0 投票
2 回答
74 浏览

unit-testing - 使用 R# 测试运行器运行 ReSharper 插件测试

我正在构建一个 R# 插件并决定用测试来覆盖它。但是,我注意到,如果插件目标版本与 R# 版本相同,则无法使用 R# 运行器运行插件测试。

例如,如果您尝试使用JetBrains.ReSharper.SDK.Testsof version运行测试2016.2.20160818.171542,您将收到以下错误:

ERROR System.TypeLoadException: Method 'RunTests' in type 'JetBrains.ReSharper.UnitTestRunner.nUnit26.BuiltInNUnitRunner' from assembly 'JetBrains.ReSharper.UnitTestRunner.nUnit26, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.

在以前的版本中,错误是不同的。

这很可能是因为 R# 运行程序和 SDK 程序集混合在一起。

有什么方法可以配置项目/R# 以便能够使用 R# 运行器运行插件单元测试?很可能,R# 开发团队使用他们自己的跑步者。

谢谢!

0 投票
1 回答
145 浏览

resharper - Resharper 运行配置

我正在尝试制作一个 reshaprer 插件,以在 resharper 的构建/运行窗口中添加一个(或多个)配置,除了可执行文件、静态方法、项目之外。任何指导方针从哪里开始?或者如何访问构建的上下文和配置?目前正在检查 JetBrains.IDE.RunConfig、SolutionBuilders 等,但我们将不胜感激。这个插件应该是一个解决方案组件还是一个解决方案实例组件?Resharper 的 sdk 帮助运气文档构建/运行组件。

预先感谢!

0 投票
1 回答
28 浏览

unit-testing - R# 插件测试:如何在名称中指定带括号的上下文操作

我创建了一个复合上下文动作,它返回几个带有以下文本的意图:

  • [标签] 行动
  • 第二次行动

现在我试图通过测试来覆盖这个动作。我按照指南做了所有事情,但我无法使用caret符号识别第一个动作。

我尝试了以下选项:

  • {caret:[Tag]:Action}
  • {caret:Tag:Action}

他们的注意事项有效:(

如果我对 做同样的Second Action事情,一切都很好。问题可能与括号有关。

我不想更改操作的名称。你能建议如何用括号指定动作吗?

谢谢!

更新

我找到了以下解决方法:

  1. 在数据文件中指定操作的别名:{caret:TagAction}.
  2. 覆盖SelectItem方法和调整属性

    /li>

如果你知道更好的方法 - 建议它:)

0 投票
1 回答
55 浏览

resharper - 为什么我的自定义宏没有出现在模板资源管理器中?

我正在尝试为 c# 模板开发一个宏,但它根本不起作用。我试过阅读整个(不完整的)文档,或者找到一个宏的源代码作为例子,但我都失败了。

我能够构建、安装和调试插件。没有错误,构造函数和方法都被调用。但是当我访问模板资源管理器中的宏时,那里什么都没有。我也All macros从选项中进行了选择。

这是我的代码

MyMacroDefinition.cs

MyMacroImplementation.cs

Subeta.Abp.ReSharper.nuspec

提前致谢!

0 投票
0 回答
42 浏览

resharper - 如何从我的包中禁用特定的 Visual Studio 命令?

我正在创建一个要求文本空格采用特定格式的包。无需争论为什么让我们假设这是一个可以的要求。然后我必须阻止 Visual Studio 自动更新代码。

从打开的文档中这很容易,我可以在其中添加命令过滤器并防止使用以下代码执行命令。

Edit.FormatDocument 命令 id 按我的要求被阻止。我还可以添加 Edit.FormatSelection 或任何其他可能影响空白的命令。这对于我标记有这种特殊需要的打开文档来说都很好。

然而,当涉及到像 Resharper 这样以多种方式更新文件而不实际打开文件本身的加载项时,就会出现问题。一旦我发现哪些命令对我的实现来说是不稳定的,我还需要阻止其中一些命令。

所以问题是我可以在应用程序范围内设置某种 CommandFilter 以便我可以在行动中捕捉它们吗?这将允许我清理 Resharper 的命令,然后根据需要恢复包含格式的文件。

另一种可能性是,如果我能找到 Resharper 选项文件的位置并以某种方式对其进行更新以排除所述文件。我知道这是手动可能的。