0

對於Resharper 7.1,我們編寫了一個Resharper插件 - 放在C:\Users\<UserName>\AppData\Roaming\JetBrains\ReSharper\vAny\Plugins 文件夾中。在VS 2012中,插件沒有任何問題。部署Resharper 9.2插件作爲一個DLL

該插件的目的是分析當前打開的C#文件並檢查我們公司的文件頭是否寫在頁面頂部。如果不是,則會突出顯示整個內容。

現在我們切換到Resharper 9.2。我成功地編譯了由nuget下載的Resharper 9.2 SDK的源代碼。但是我沒有得到由Resharper識別/工作的Resharper插件。

插件應該放在哪裏有什麼變化?我讀了一些關於創建nuget包的建議 - 但這步真的需要嗎?

我想了解如何讓插件運行。

回答

2

不好意思在提問之前不要閱讀文檔。 R#文檔很安靜。

如何解決了這個問題:

我改名爲項目,使得「」在項目和程序集名稱中,可以說Company.MyPlugin。我在nuget中是全新的,但我發現我需要在Company.MyPlugin.csproj所在的目錄中運行>nuget.exe spec。 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創建PACKE。將適當的目錄添加到R#選項菜單中的包源中,讓MyPlugin成功出現在擴展管理器中,並且 - 非常酷 - 它正在工作。 :)

我強烈建議閱讀devguide。也請看JetBrains Devguide Extensions Troubleshooting