0

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

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

4

2 回答 2

2

从 R# 9 开始,简单的 xcopy-deployment 不再起作用,您需要创建一个 NuGet 包(如果您不打算发布扩展程序也是如此)。

请参阅R# DevGuide 中的初始安装本地安装

于 2015-10-05T23:58:57.243 回答
2

在提出问题之前不阅读文档的心情不好。R# 文档很有帮助。

我是如何解决问题的:

我将项目重命名为“。” 在项目和程序集名称中,可以说Company.MyPlugin. 我是 nuget 的新手,但我发现我需要在 nuget>nuget.exe spec所在的目录中运行Company.MyPlugin.csproj。Nuget 将创建一个Company.MyPlugin.nuspec我必须编辑的文件。我删除了一些部分,因为我不想在线部署插件。

<?xml version="1.0"?>
<package >
  <metadata>
    <id>Company.MyPlugin</id>
    <version>1.0.0.0</version>
    <title>My Plugin Title</title>
    <authors>Myself</authors>
    <owners>Company</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Some description.</description>
    <copyright>Copyright 2015</copyright>
    <dependencies>
      <dependency id="Wave" version="[3.0]" />
    </dependencies>
  </metadata>
  <files>
    <file src="bin\Release\Company.MyPlugin.dll" target="DotFiles" />
  </files>
</package>

请注意,我想让该包可用于 R# 9.2,因此我需要对 Wave 3.0 的依赖。在某处我读到 Resharper 9.2 也应该存在依赖关系,并且在某处指出这不再是必需的。它在没有 Resharper 9.2 依赖项的情况下对我有用。

使用 .创建 nuget 包>nuget.exe pack Company.MyPlugin.nuspec。将出现一些关于程序集不在lib文件夹中的警告。忽略这些警告。

它还没有完成。由于 JetBrains 从产品 R# 转移到 Resharper 平台,我不得不创建一个所谓的ZoneMarker. 这些天 JetBrains 表示,还没有合适的工具来确定正确的 ZoneMarker 是什么(请参阅JetBrains Devguide HowTo ZoneMarker)。作为临时解决方案,您可以定义一个空的 ZoneMarker。

using JetBrains.Application.BuildScript.Application.Zones;

namespace Company.MyPlugin
{
  [ZoneMarker]
  public class ZoneMarker
  {
  }
}

添加 ZoneMarker 后,我能够编译程序集,运行nuget以创建一个包。在 R# 选项菜单中的 Package Sources 中添加正确的目录让 MyPlugin 成功地出现在 Extensions Manager 中,并且 - 这很酷 - 它正在工作。:)

我强烈建议阅读开发指南。还请查看JetBrains Devguide Extensions Troubleshooting

于 2015-10-06T06:11:39.757 回答