C# ReSharper 9添加菜单项操作不工作

C# ReSharper 9添加菜单项操作不工作,c#,nuget,resharper,nuget-package,resharper-9.0,C#,Nuget,Resharper,Nuget Package,Resharper 9.0,尝试更新我的resharper扩展以适用于9.0,之前我只是将dll移动到插件目录中,但现在我需要弄清楚如何让nuget开始工作。。。我已经能够打包文件,dll包含在nupkg中,但我认为我有一些名称空间\id问题(对.net不太熟悉),而且在导入nuget包时,我的actions.xml似乎甚至没有被resharper读取。未添加菜单项。如果有人能给我一些关于如何调试nuget软件包或可能出现什么问题的建议,我会非常感激,因为我已经在这方面坚持了几天了 Actions.xml <?xml

尝试更新我的resharper扩展以适用于9.0,之前我只是将dll移动到插件目录中,但现在我需要弄清楚如何让nuget开始工作。。。我已经能够打包文件,dll包含在nupkg中,但我认为我有一些名称空间\id问题(对.net不太熟悉),而且在导入nuget包时,我的actions.xml似乎甚至没有被resharper读取。未添加菜单项。如果有人能给我一些关于如何调试nuget软件包或可能出现什么问题的建议,我会非常感激,因为我已经在这方面坚持了几天了

Actions.xml

<?xml version="1.0" encoding="utf-8" ?>
<actions>
  <action id="yuval" text="L10N"></action>
  <insert group-id="ReSharper" position="last">
    <action-ref id="yuval" text="About Localization Helper"/>
  </insert>
</actions>
nuget规范

<?xml version="1.0"?>
<package >
  <metadata>
    <id>JetBrains.Resharper.L10N</id>
    <version>1.0.0.7</version>
    <title>L10N</title>
    <authors>Yuval</authors>
    <owners>UW</owners>
    <licenseUrl>https://myurl.com</licenseUrl>
    <projectUrl>https://myurl.com</projectUrl>
    <iconUrl>https://myurl.com/logo.png</iconUrl>
    <requireLicenseAcceptance>true</requireLicenseAcceptance>
    <description>Tool to help localize</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2015</copyright>
    <tags></tags>
    <dependencies>
      <dependency id="Wave" version="[1.0]" />
    </dependencies>
  </metadata>
<files>
    <file src="..\bin\Debug\JetBrains.Resharper.L10N.dll"
          target="dotFiles\"/>
  </files>
</package>

JetBrains.Resharper.L10N
1.0.0.7
L10N
尤维尔
华盛顿大学
https://myurl.com
https://myurl.com
https://myurl.com/logo.png
真的
帮助本地化的工具
此版本包中所做更改的摘要。
版权所有2015

在ReSharper 9中注册操作的方式已更改。不再使用
actions.xml
,而是使用action类上的接口。例如,向重竖琴添加操作→ “工具”菜单中,您可以执行以下操作:

[动作(动作Id,Id=1)]
关于战术的公开课:IExecutableAction,IInsertLast
{
public const string ActionId=“yuval”;
// …
}
您还需要为
Id
指定一个唯一的值。从9.1开始,这需要在您自己的扩展中是唯一的(9.0要求它在整个安装中是唯一的,包括ReSharper本身和任何其他扩展)

无论何时更改操作的属性或接口,都需要通过nupkg重新安装扩展(操作以与标准VS扩展相同的方式在Visual Studio中静态注册),但如果只是实现发生了更改,则可以手动或通过将DLL复制到安装文件夹

您还需要确保定义了一个
ZoneMarker
类。这声明您的操作属于一个区域,该区域用于根据已安装的功能和当前主机启用/禁用功能(例如,特定于Visual Studio的扩展只在VS中工作,而不会加载到dotPeek中,等等)。您可以通过此页面了解有关的更多信息,为您提供有用的信息

也应该有帮助


另外,最好将dll命名为nupkg,而不是
JetBrains.ReSharper.(无论什么)
,以防止与官方dll发生任何潜在冲突,并防止对dll的来源产生混淆。名称的第一部分应该是贵公司的名称(或个人名称)。

我如何定义自己的菜单组,在其中可以找到多个菜单项?我可以将这样一个组添加到VisualStudio的主菜单中,或者在ReSharper菜单项的顶层吗。。。如何设置菜单项的“文本”呢?好的,我花了一些时间,但我想出来了。。。我认为你的例子是错误的。在您的情况下,属性必须是
[Action(Id,Id=)]
,对吗?至少这是我唯一能在菜单上显示我的动作的方法。请修改解释!我想在您的示例中重命名变量也可以防止进一步的混淆…是的,常量名称的选择是错误的。我已将其重命名为
ActionId
,因为这是参数名。对于9.1,
Id
的值可以是任何数字,因为它不再需要是整个安装的唯一值,只需要扩展(我认为,但没有检查,您也可以不设置它就可以离开)。创建组需要创建一个从
IAction
派生的类,并用
[ActionGroup(…)标记
属性。它需要一个组插入样式(嵌入式、子菜单、分隔符)和一个唯一的ID(同样,我不能100%确定是否可以省略)。现在,您可以将此操作(组)用作
IInsertLast
类型接口的参数。
<?xml version="1.0"?>
<package >
  <metadata>
    <id>JetBrains.Resharper.L10N</id>
    <version>1.0.0.7</version>
    <title>L10N</title>
    <authors>Yuval</authors>
    <owners>UW</owners>
    <licenseUrl>https://myurl.com</licenseUrl>
    <projectUrl>https://myurl.com</projectUrl>
    <iconUrl>https://myurl.com/logo.png</iconUrl>
    <requireLicenseAcceptance>true</requireLicenseAcceptance>
    <description>Tool to help localize</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2015</copyright>
    <tags></tags>
    <dependencies>
      <dependency id="Wave" version="[1.0]" />
    </dependencies>
  </metadata>
<files>
    <file src="..\bin\Debug\JetBrains.Resharper.L10N.dll"
          target="dotFiles\"/>
  </files>
</package>