将 Resharper 9.2 插件部署为 dll
Deploy Resharper 9.2 Plugin as a 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 插件 recognized/working。
插件的放置位置有什么变化吗?我阅读了一些关于创建 nuget 包的建议 - 但是这一步真的有必要吗?
我想了解如何获取插件 运行。
从 R# 9 开始,简单的 xcopy-deployment 不再起作用,您需要创建一个 NuGet 包(如果您不打算发布您的扩展)。
请参阅 R# 开发指南中的 Initial Installation and Local Installation。
提问前不阅读文档心情不好。 R# 文档非常有用。
我是如何解决问题的:
我将项目重命名为“.”。在项目和程序集名称中,可以说 Company.MyPlugin
。我是 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.exe pack Company.MyPlugin.nuspec
创建 nuget 包。将出现一些关于程序集不在 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。
对于 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 插件 recognized/working。
插件的放置位置有什么变化吗?我阅读了一些关于创建 nuget 包的建议 - 但是这一步真的有必要吗?
我想了解如何获取插件 运行。
从 R# 9 开始,简单的 xcopy-deployment 不再起作用,您需要创建一个 NuGet 包(如果您不打算发布您的扩展)。
请参阅 R# 开发指南中的 Initial Installation and Local Installation。
提问前不阅读文档心情不好。 R# 文档非常有用。
我是如何解决问题的:
我将项目重命名为“.”。在项目和程序集名称中,可以说 Company.MyPlugin
。我是 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.exe pack Company.MyPlugin.nuspec
创建 nuget 包。将出现一些关于程序集不在 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。