2017-08-27 5 views
6

Visual Studio 2017に付属しているデフォルトのRoslyn SDKテンプレートを使用しています。私はRoslyn拡張性プロジェクトがPortableの代わりに.NET Standard \ Coreをターゲットにできると仮定しています。私は調査できるRoslyn Analyzer \ Refactoringプロジェクトのテンプレートまたはサンプルを探しています。.NETポータブルではなく.NET Standard Coreを対象としたRoslyn Analyzerを構築する必要があります

+0

新しいプロジェクトを開始し、アナライザを参照してからvsixから呼び出すか、CSProjファイルを変更してポータブルライブラリを置き換えてください。 –

+1

私はそれを試みましたが、それはまっすぐではありません。これが成功した場所を見てみましょう。 –

+0

私がうまく働いていることを私が知っている唯一のプロジェクトは、私の会社が共有を許可するとは思わない、ここのプロジェクトです。しかし、私はこの[回答](https://stackoverflow.com/a/23135170/1938988)と一緒に従いました –

答えて

4

私は新しいRoslynプロジェクトに取り組み、テンプレートを使用する代わりに、1つずつ構築しました。 https://github.com/IKoshelev/Roslyn.AutoLogging/commit/1f88e3e49141e0fa425c51fdcb3457a7c3d6dcaa

は、私は、次のターゲティングを持っているために管理:

リファクタリングプロジェクト - .NETコア2.0

- .NET標準の1.3

ユニットテストプロジェクト(この.dllはバージョンが最小限に抑え、配布されます)

VSIXプロジェクト - の.NET Framework 4.6(私は信じている、それは大丈夫であるように、唯一の完全なVisual Studioは、VSIXをサポートしています)ロスリンの

更新バージョニングVisual Studio 2015で拡張機能を使用する場合は、PCLライブラリを使用する必要があります。この記事の末尾にある詳細article on Roslyn

7

デフォルトのアナライザテンプレートから変換されたアナライザのサンプルはhereです。比較のための独自のアナライザーがあり、.NET標準をターゲットとするTestAnalyzerStandardがあります。

ステップそれを動作させるために:

  • ライブラリは、.NETの標準1.3を対象としなければならない
  • 新しい.NET標準ライブラリを作成します。これはVS内でエクステンションとしてアナライザを実行する場合に必要です(拡張対象は.NET 4.6)。標準バージョンと完全なフレームワークバージョンの間のマッピングはhereで利用可能です。また、1.3より低いバージョンをターゲットにしようとすると、必要なアナライザパッケージを含めることができなくなります。
  • Microsoft.Composition最新バージョンのナゲットパッケージを追加します。これはMicrosoft.CodeAnalysis.CSharp.Workspacesによって必要とされます。最初にワークスペースを追加しようとすると、参照されたコンポジションパッケージに互換性がないというエラーが表示されます。
  • (バージョンはMicrosoft.CodeAnalysis.CSharpのバージョンと一致する必要があります)Microsoft.CodeAnalysis.Csharp.Workspacesためnugetパッケージを追加します
  • (私は最新1. *バージョンを使用しています)Microsoft.CodeAnalysis.CSharpためnugetパッケージを追加します。
  • ポータブルプロジェクトのコードをコピーしてビルドすることができます。エラーはないはずです(VSにまだ赤い波が表示されている場合は、ソリューションを閉じて再度開く必要があるかもしれません)。
  • source.extension.vsixmanifestちょうどオープン、VSの拡張作業を行うには、ちょうどnuget pack Diagnostic.nuspec .を実行するパッケージを.nuget作成するには、標準ライブラリ
  • を.NET用の資産タブと変更を参照してください。 Diagnostic.nuspecはNuget 2.xに有効です。 VS 2017でパッケージ管理コンソール経由でnugetを使用している場合は<file src="*.dll" ..."<file src="bin\*\netstandard1.3\*.dll" ...に変更する必要があります。

これらの手順は、アナライザを使用した私の実験の結果です(以前ポータブルライブラリではなくフルフレームワークをターゲットとしたDLLを作成していました)。彼らは決して公式ではありません。

+0

私は参照したプロジェクトをダウンロードしました。ポータブル版のアナライザーはコアバージョンのみを残してビルドしようとしました。これまでのところ、VSIXは動作せず、ナゲットにはパッケージ内のDLLが含まれていません。 –

+0

私はVisual Studio 2017(15.2)でvsixとnugetの両方のパッケージをテストしていましたが、どちらもうまく動作していました。私はポータブルアナライザーからの参照を削除し、パッケージ化のために 'Diagnostic.nuspec'を指すように更新された' .csproj'ファイルを更新しました。 'TestAnalyzerStandard' - >' Pack'を右クリックしてVisual Studioから直接nugetパッケージをビルドすることができます。 NugetパッケージはDebug(またはRelease)フォルダにあります。 'TestAnalyzerStandard \ Publish'フォルダにビルドされたvsix拡張とnugetパッケージも含まれていますので、私のマシン上で何が生成されているのか見ることができます。 – nejcs

+0

私は後で確認する必要があります(申し訳ありませんが、今すぐ読み込まれています)。私は賞金を授与した。 –

関連する問題