Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Visual studio extensibility

590 vues

Publié le

Presentation material in Fukuoka .NET Conf 2017 at Oct 21, 2017.
Written about Visual Studio SDK.

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Visual studio extensibility

  1. 1. Visual Studio Extensibility 2017/10/21 Fukuoka.NET Conf 2017 ~ハンズオンで体験する最新.NETテクノロジー~ 株式会社 アイキューブドシステムズ 藤本 武
  2. 2. 自己紹介  connpass  tafuji  https://connpass.com/user/Takeshi_Fujimoto/  CLOMO MDM Agent (iOS)  Xamairn  DevOps  Visual Studio Team Services Extension (Internal Tool)
  3. 3. Agenda Visual Studio Extensibility Hello World その他の拡張機能 まとめ Resources Appendix
  4. 4. Visual Studio Extensibility Visual Studio そのものを拡張するための SDK など Visual Studio の拡張可能な主な機能 コマンド メニュー・ツールバー ツール・ウィンドウ エディター 言語サービス プロジェクト/項目 テンプレート etc. Visual Studio の機能を Visual Studio を使って開発できる
  5. 5. Visual Studio Extensibility - インストール  「Visual Studio 拡張機能の開発」にチェックを入れる
  6. 6. Visual Studio Extensibility - インストール  SDK に加えて拡張機能用の Visual Studio のテンプレートがインス トールされる
  7. 7. Hello World Visual Studio のカスタムコマンドを例に
  8. 8. Hello World – プロジェクトの作成  [Extensibility] の [VSIX Project] テンプレートからプロジェクトを作成
  9. 9. Hello World – カスタムコマンドの作成  [Custom Command] を新規追加
  10. 10. Hello World – 実行 デバッグ実行すると… Visual Studio (Visual Studio 実験的なインスタンス)が起動する Visual Studio 拡張機能の検証環境 [ツール] メニューに作成した コマンドが表示される
  11. 11. Hello World – Internals  VSIX ファイル  Command  マニフェストファイル  VSPackage
  12. 12. Hello World – Internals : VSIX ファイル プロジェクトのビルド:vsix ファイルが出力される 拡張機能のインストーラー 実体は zip ファイル 実行すると インストーラーが起動する
  13. 13. Hello World – Internals : Command の処理  Custom Command テンプレートから作成したクラス コールバック関数の中に実装する
  14. 14. Hello World – Internals : Command 表示設定  vsct ファイル 実体は XML ファイル Menu の Command の配置を定義する Command の文言 Command のアイコン
  15. 15. Hello World – Internals : vsixmanifest 拡張機能に関する設定を定義(実体は XML ファイル)
  16. 16. Hello World – Internals : vsixmanifest  Metadata 説明 アイコン Etc.
  17. 17. Hello World – Internals : vsixmanifest  Install Targets サポートする Visual Studio のエディションとバージョンを指定 記号 意味 [ 以上 ( 大なり ] 以下 ) 小なり Visual Studio Community Edition 以上
  18. 18. Hello World – Internals : vsixmanifest Assets 拡張機能に含めるコンテンツを指定する
  19. 19. Hello World – Internals : vsixmanifest Dependencies 拡張機能が依存する .NET Framework のバージョンなどを指定
  20. 20. Hello World – Internals : vsixmanifest  Prerequisites  値は、Install Targets の設定と合わせる VSIX Extension Schema 2.0 Reference https://docs.microsoft.com/en-US/visualstudio/extensibility/vsix- extension-schema-2-0-reference
  21. 21. Hello World – Internals : VSPackage Visual Studio の機能を拡張するためのモジュール https://docs.microsoft.com/ja-jp/visualstudio/extensibility/internals/inside-the-visual-studio-sdk Visual Studio IDE Package API Interop Assemblies Managed Package Framework VS Package 1 VS Package 1 …
  22. 22. Hello World – Internals : VSPackage  MPF(Managed Package Framework) Visual Studio の機能を利用するための Framework Package クラスの GetService メソッド経由で Visual Studio の機能を利用する
  23. 23. Hello World – Internals : VSPackage  例:Visual Studio でアクティブなドキュメントを取得
  24. 24. Hello World – Internals : VSPackage  例:Visual Studio で開いている Solution, Project を取得する  EnvDTE インターフェースを利用する  EnvDTE Interface  https://msdn.microsoft.com/ja-jp/library/envdte.dte.aspx
  25. 25. Hello World – まとめ VSIX プロジェクトの作成 必要な機能の追加(Custom Command) 機能の実装 テスト リリース
  26. 26. その他の拡張機能 • Tool Window • Project / Item Template
  27. 27. Tool Window Visual Studio 上に表示される Window の拡張機能
  28. 28. Tool Window  実体は WPF の UserControl
  29. 29. Project / Item Template プロジェクト、項目テンプレートが作成できる
  30. 30. Project / Item Template  Visual Studio 上でカスタムテンプレートを選択できるようになる
  31. 31. まとめ Visual Studio を 自分好みに育てましょう!
  32. 32. Resources  Sample  https://github.com/tafuji/Fukuoka-NET-Conf-2017  Visual Studio SDK  https://docs.microsoft.com/en-us/visualstudio/extensibility/visual-studio-sdk  Starting to Develop Visual Studio Extensions  https://docs.microsoft.com/en-us/visualstudio/extensibility/starting-to-develop- visual-studio-extensions  Visual Studio SDK Reference  https://docs.microsoft.com/en-us/visualstudio/extensibility/visual-studio-sdk- reference  Visual Studio Extensibility (VSX)  http://www.visualstudioextensibility.com/
  33. 33. Appendix - Extensibility Tool  拡張機能開発をサポートする拡張機能 VSCT ファイルの IntelliSense Etc.  Extensibility Tool  https://marketplace.visualstudio.com/items?itemName=MadsKristensen.ExtensibilityTools
  34. 34. Appendix – OutOfMemoryException プロジェクト新規作成後 OutOfMemoryException でビルドが失敗  原因:テンプレートから作成されたイメージファイルが破損  対処方法 Qiita : Visual Studio 拡張機能を新規作成後、 System.OutOfMemoryException が発生し、ビルドエラーが出るときの 対処法 https://qiita.com/tafuji/items/e17d86c4f29e9fc73045
  35. 35. Appendix – 厳密名のないライブラリの利用 拡張機能が参照するアセンブリは、厳密名が必要 厳密名のない 3rd Party 製のライブラリ利用時の回避策 ソースがある場合は、厳密名を付与してビルドする(原則) StrongNameSigner https://github.com/brutaldev/StrongNameSigner Costura.Fody 参照するアセンブリをリソースとして埋め込むライブラリ https://github.com/Fody/Costura
  36. 36. Appendix – Project テンプレートのサンプル Visual Studio 2017 のテンプレートが参考になります インストールされているテンプレートの場所は? 診断ログを出力させて調べることができます 具体的な方法 Qiita : Visual Studio 2017 のプロジェクト・項目テンプレートがイ ンストールされている場所を調べる方法 https://qiita.com/tafuji/items/e0a6b9921247f54551c2
  37. 37. Appendix - Visual Studio for Mac の拡張 Visual Studio for Mac も拡張可能 Extending Visual Studio for Mac https://docs.microsoft.com/en- us/visualstudio/mac/extending-visual-studio-mac IED の内部構造が異なる(Xamarin Studio ベース)ので、 拡張機能の作り方も Visual Studio(Windows)の場合と 異なる
  38. 38. Appendix - Visual Studio Code の拡張  Visual Studio Code も拡張機能が開発できます Extending Visual Studio Code https://code.visualstudio.com/docs/extensions/overview VS Code Extension Examples https://code.visualstudio.com/docs/extensions/samples

×