Visual Studio 2017に付属しているデフォルトのRoslyn SDKテンプレートを使用しています。私はRoslyn拡張性プロジェクトがPortableの代わりに.NET Standard \ Coreをターゲットにできると仮定しています。私は調査できるRoslyn Analyzer \ Refactoringプロジェクトのテンプレートまたはサンプルを探しています。.NETポータブルではなく.NET Standard Coreを対象としたRoslyn Analyzerを構築する必要があります
答えて
私は新しい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
デフォルトのアナライザテンプレートから変換されたアナライザのサンプルは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を作成していました)。彼らは決して公式ではありません。
私は参照したプロジェクトをダウンロードしました。ポータブル版のアナライザーはコアバージョンのみを残してビルドしようとしました。これまでのところ、VSIXは動作せず、ナゲットにはパッケージ内のDLLが含まれていません。 –
私はVisual Studio 2017(15.2)でvsixとnugetの両方のパッケージをテストしていましたが、どちらもうまく動作していました。私はポータブルアナライザーからの参照を削除し、パッケージ化のために 'Diagnostic.nuspec'を指すように更新された' .csproj'ファイルを更新しました。 'TestAnalyzerStandard' - >' Pack'を右クリックしてVisual Studioから直接nugetパッケージをビルドすることができます。 NugetパッケージはDebug(またはRelease)フォルダにあります。 'TestAnalyzerStandard \ Publish'フォルダにビルドされたvsix拡張とnugetパッケージも含まれていますので、私のマシン上で何が生成されているのか見ることができます。 – nejcs
私は後で確認する必要があります(申し訳ありませんが、今すぐ読み込まれています)。私は賞金を授与した。 –
- 1. MACでCoreとFull .NETの両方を対象とした.NETコアを構築
- 2. .Net v4.0で構築されたDllを.NET Core 1.0に移植
- 3. .NET Coreライブラリでのdepencenciesを制限する必要がありますか?
- 4. .NetコアをDLLではなくEXEとして構築する
- 5. .NET Core(coreclr)にBitmapImageの抽象化はありますか?
- 6. ClickOnce Appによると、.NET 2.0を使用して構築された.NET 3.5が必要です。
- 7. .NET Core/.NET StandardのPropertyInfo.ReflectedTypeと同等の機能は何ですか?
- 8. .NET Standard/.NET CoreのType.GetGenericArguments()に相当するものは何ですか?
- 9. NCrunch TestProjects with .net standard/core not working
- 10. .NET Framework - .NET Framework 4.6を対象とするときにXElementが見つかりませんでした
- 11. Linux上でWeb APIを構築する.net core
- 12. VS 1.1を対象とする.NET 1.1のプラグインはありますか?
- 13. .NET Core Authorization Model:要求のコンテキストを必要とするポリシー
- 14. 完全な.NETフレームワークをターゲットとするデフォルトの.NET Coreコンソールアプリケーションを構築する際のエラー4.6.2
- 15. エラー:HiveでSparkを構築する必要があります
- 16. .NET Core(.NET Standard 1.4および.NET Framework 4.6.1)でSystem.Net.Httpにawait/asyncを使用している場合のバグはありますか?
- 17. 参照してください.Net Framework dllで構成データを読み取る必要があります。
- 18. Roslynと.NET less C#?
- 19. 高速ソートデータグリッドアプリケーション(デスクトップクライアント)を構築する必要があります
- 20. System.Runtime(.net 4.6)とmscorlib(.net Standard 1.6)
- 21. .Net 4.5:IDataErrorInfoまたはINotifyDataErrorInfoを使用する必要がありますか?
- 22. .NET CoreデバッグがVisual Studioで機能しなくなりましたCode 1.9
- 23. .NETアプリケーションを64ビットフレームワークで構築する利点はありますか?
- 24. .NET Core .dllがシンボルファイルを見つけたり開くことができない
- 25. .NETの管理対象構造にアンマネージデータをマッピングする
- 26. .NET Coreで作業中にAssemblyInfoが必要ですか?
- 27. .NETでコラボレーションサービス(プレゼンス、チャット)を構築する
- 28. .NET 2.0/.Net 3.5を使用してVS2008プロジェクトを構築する
- 29. .Net CoreをサポートするNHibernateのバージョンはありますか?
- 30. Silverlightでフォトポートフォリオサイトを構築する - あなたの入力が必要でした!
新しいプロジェクトを開始し、アナライザを参照してからvsixから呼び出すか、CSProjファイルを変更してポータブルライブラリを置き換えてください。 –
私はそれを試みましたが、それはまっすぐではありません。これが成功した場所を見てみましょう。 –
私がうまく働いていることを私が知っている唯一のプロジェクトは、私の会社が共有を許可するとは思わない、ここのプロジェクトです。しかし、私はこの[回答](https://stackoverflow.com/a/23135170/1938988)と一緒に従いました –