Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Visual studio extensibility

531 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×