visual studio 2017 rc c# まわり
TRANSCRIPT
Visual Studio 2017 RCC# まわりをチェック
2016/12/01 【bitFlyer TechNight】 vol.2 C# LT Meetup!
矢後 比呂加
@miso_soup3
この発表について• 対象者
• Visual Studio (Windows) で開発する C# 開発者
• Visual Studio 2017 に興味のある方
• 内容• Visual Studio 2017 RC における C# まわりの機能をピックアップ
• ゴール• Visual Studio 2017 RC の C# まわりを、何となく掴む
• 今後、Visual Studio 2017 を触ったときに、新機能を思い出して調べることができる
目次Visual Studio 2017 RC とは Visual Studio 2017 RC とは
所感
コードスタイル コードスタイル名前指定の設定EditorConfig
コードナビゲーション 移動先 Ctrl + T すべての参照の検索構造のガイド線
インテリセンスの強化
クイックアクション(Ctrl + .)の操作が追加
デバッグと診断 Run To Clickプロセスにアタッチ例外ヘルパー
拡張機能 新しい拡張機能の形式拡張機能マネージャーのローミング
IDE フォルダーで開くライトウェイトソリューションロードシンタックスハイライト等のサポート追加
ライブユニットテスト
リファレンス
Visual Studio 2017 RC とは• 2015/7 Visual Studio 2015 リリース後、
次の Visual Studio のバージョン
• 2016/11/16 イベント「Connect(); //2016」にて、Visual Studio 2017 RC を発表
• 旧称:Visual Studio “15”, Visual Studio vNext
※ RC なので、発表内容とは変更になる可能性があります。
GitHub の Roslyn プロジェクトのマイルストーンより
Visual Studio 2017 RC とは
いまここ
これから
これから
所感• コードスタイル、リファクタ―、インテリセンスの強化
• Roslyn
• 開発にプラスして、大規模なソリューションや知らないコードにおける読解のサポート
• 部品構成なインストール
• Visual Studio 内で閉じない、他のエディターでも使える機能
コードスタイルコードスタイル
名前指定
EditorConfig
コードスタイル・コードスタイルの項目が更新
・名前指定が追加
コードスタイル:全般• スタイルに関する設定が追加
this を付けるか
var か型の明示か
Int32 か int か
object初期化子
インライン変数定義
null チェックの書き方
コードスタイル:全般var で試してみる。
• None
コードスタイル:全般• Suggestion
コードスタイル:全般• Warning
コードスタイル:全般• Error
コードスタイル:名前指定• 名前付けのルールを設定できるように
※「非同期で終わる」はたぶん適切でない訳
コードスタイル:名前指定• 名前の種類 • ルール
コードスタイル:EditorConfigコードのスタイルを…
• プロジェクト単位で設定できる
• コードベースで設定
• プラグインは要らない、 Visual Studio 2017 に搭載予定
• Visual Studio 以外でもOK
インデント方式(タブ・スペース)や改行コード等。
コードスタイル:EditorConfigツールのオプションで設定してみる
インデントを、「スペース」「4」に設定
コードスタイル:EditorConfigプロジェクト配下に 「.editorconfig」を作成する
インデントを「タブ」に設定
コードスタイル:EditorConfig.editorconfigで設定したスタイルが適用される
(※ファイルの開きなおしが必要)
コードスタイル:EditorConfig同じソリューション配下でも、プロジェクト毎に設定が可能
コードスタイル:EditorConfig• EditorConfig.org
異なるエディタ・IDE
でも、一貫した
コーディングスタイルを
定義・維持する。
RubyMine、Atom、
Xcode、PhpStorm、
Visual Studio Code
等 どんなエディタでもEditorConfigを使ってコードの統一性を高める -Qiita http://qiita.com/naru0504/items/82f09881abaf3f4dc171
コードスタイル:EditorConfig主な設定項目
• indent_style
• tab_width
• end_of_line
• charset
• trim_trailing_whitespace
• insert_final_newline
• root• どの.editorconfigを見るかのための設定。• .editorconfigはサブフォルダまで見る。• root=trueの記述がある.editorconfigが決定となる。
C# 用の項目として、
var や 初期化等も設定可能
になる予定?
コードスタイル:EditorConfig
editorconfig codestyle options by jmarolf ·Pull Request #15029 · dotnet/roslyn
https://github.com/dotnet/roslyn/pull/15029
コードナビゲーション移動先 Ctrl + T
すべての参照の検索
構造のガイド線
コードナビゲーション:移動先• 目的のオブジェクトを見つけて移動する機能
• Ctrl + T(or Ctrl + ,)
• フィルター)
コードナビゲーション:移動先• あいまい検索
• 「FrstName」というタイプミスで、「FirstName」と「LastName」が結果に表示される。
コードナビゲーション:移動先• ファイルを探す「t controller」
コードナビゲーション:移動先• メンバーを探す「m get」
コードナビゲーション:移動先• 行「:24」
コードナビゲーション:移動先・単なる文字検索はできない
例:SuppressMessage属性にひっかからない
コードナビゲーション:すべての参照の検索
• 「すべての参照の検索(Shift + F12)」が改良• 色付け、グルーピング、フィルター、並び替え、検索、プレビュー
コードナビゲーション:すべての参照の検索
• プレビュー表示(C#およびVB)
「結果を保持」で、
ウィンドウを別にして結果を保持できる
コードナビゲーション:すべての参照の検索
• 範囲指定
コードナビゲーション:すべての参照の検索
• ちなみに Visual Studio 2015 の「すべての参照の検索」
コードナビゲーション:すべての参照の検索
「すべてを検索」には対応していない(´・ω・`)残念
コードナビゲーション:構造のガイド線• デフォルトで表示される縦線
• 現在、C#、Visual Basic、XAML のファイルに加えて、TextMate 文法を介してサポートされるすべてのファイルでサポート
コードナビゲーション:構造のガイド線
インテリセンスの強化クイックアクション Ctrl + .
インテリセンスの強化• インテリセンスでフィルターが可能に
フィルター項目• ローカルおよびパラメーター• メソッド• インターフェイス• クラス• 構造• 列挙型• デリゲート• 名前空間• キーワード• スニペット
「Alt+(頭文字)」でショートカットアクセス(メソッドはAlt + M)
クイックアクション(Ctrl + .)の操作が追加
クイックアクション(Ctrl + .)とは
• リファクタリング機能で、Visual Studio 2015 から追加された機能
• Roslyn による拡張が可能
→ リファクタリングできるものが増えました
クイックアクション(Ctrl + .)の操作が追加
オブジェクト初期化の単純化
クイックアクション(Ctrl + .)の操作が追加
C# 7 インライン out 宣言
クイックアクション(Ctrl + .)の操作が追加
C# 7 スロー式
クイックアクション(Ctrl + .)の操作が追加
C# 7 スロー式
デフォルトでは、すでに不透明に。
クイックアクション(Ctrl + .)の操作が追加
挿入文字列への変換
string.Format(“Hi, {0}”, name) //から、
$“Hi, {name}” //C# 6 で追加された書き方へ
クイックアクション(Ctrl + .)の操作が追加
定義されている型を、
別のファイルとして移動
クイックアクション(Ctrl + .)の操作が追加
ファイル名と型名が違うとき、どちらかに統一
クイックアクション(Ctrl + .)の操作が追加
プロパティをメソッドに
クイックアクション(Ctrl + .)の操作が追加
長い文字列の途中で改行すると "" + "" に置き換えてくれる
(クイックアクションではなく)
改行したいところで改行キー ↓
デバッグと診断Run To Click
プロセスにアタッチ
例外ヘルパー
他
デバッグと診断:Run To Click
1 Click で、指定行まで実行できるように
今までは止めたいところに Break Point を設置し、
デバッグを進めていた
デバッグと診断:プロセスにアタッチ
検索できるようになりました
デバッグと診断:プロセスにアタッチ
検索できるようになりました
デバッグと診断:プロセスにアタッチ
前回デバッグしていたプロセスに、
再アタッチできるようになりました
(“再アタッチしています…”と進行形になっていますが、訳が変だと推測。)
デバッグと診断:例外ヘルパー
例外のダイアログの表示デザインが変更に
デバッグと診断:例外ヘルパー
中断の条件を編集できるように
デバッグと診断:例外ヘルパー
• 同じ行で、どこでnullが発生したかわかるように:
デバッグと診断:例外ヘルパー
• Inner Exception も表示
デバッグと診断:他• IntelliTrace では、ASP.NET Core アプリの MVC、ADO.NET、
HttpClient イベントがサポート
• 関数に対するCPU率
拡張機能新しい拡張機能の形式
拡張機能マネージャーのローミング
新しい拡張機能の形式• 拡張機能に必要なコンポーネントを
マニフェストで指定できるように
• インストール時に、一緒に必要な拡張機能をインストールできる
作成者の方はここをチェックHow to: Migrate Extensibility Projects to Visual Studio 2017https://docs.microsoft.com/ja-jp/visualstudio/extensibility/how-to-migrate-extensibility-projects-to-visual-studio-2017
拡張機能マネージャーのローミング• アカウントと紐づく“拡張機能リスト”
リストにある&インストールしていない
リストにある&インストールされている
リストにない&インストールされている
IDEフォルダーで開く
ライトウェイトソリューションロード
シンタックスハイライト等のサポート追加
IDE:フォルダーとして開く• 「フォルダーとして開く」が追加
IDE:フォルダーとして開くフォルダービューへの切替
IDE:フォルダーとして開く
クイックアクセス.csproj 等編集
IDE:ライトウェイトソリューションロード
• ソリューションの読み込みとメモリの使用量を改善
• 規定ではOFF
• まだ実験的
• 何とトレードオフ?
IDE:シンタックスハイライト、スニペット等
• サポートする言語が増えた
• Visual Studio Core Editor によるもの
• 言語特有のワークロードをインストールされていなくても、シンタックスハイライトなどが適用される
•構文の色づけと AutoComplete のみをサポート:
• Bat、Clojure、CoffeeScript、CSS、Docker、F#、Groovy、INI、Jade、Javadoc、JSON、LESS、LUA、Make、Markdown ++、Objective-C、Perl、PowerShell、Python、Rust、ShaderLab、SQL、Visual Basic .NET、YAML。
•(構文の色づけと AutoComplete に加えて) コード スニペットをサポート:
• CMake、C++、C#、Go、Groovy、HTML、Java、Javadoc、JavaScript、Lua、Perl、PHP、R、Ruby、Shellscript、Swift、XML。
•(構文の色づけと AutoComplete に加えて) [移動] をサポート:
• C++、C#、Go、Java、JavaScript、PHP、TypeScript、Visual Basic
ライブユニットテスト
ライブユニットテスト
• コードの編集中に、バックグラウンドでユニット テストが動く
• xUnit、NUnit、MSTest が対応
ライブユニットテスト
• コードの編集中に、バックグラウンドでユニット テストが動く
• xUnit、NUnit、MSTest が対応
ライブユニットテストを試した動画
リファレンス
Visual Studio 2017 リリース ノート(RC)https://www.visualstudio.com/ja-jp/news/releasenotes/vs2017-relnotes#a-idcshappvb-ac-および-visual-basic
Visual Studio Documentationhttps://docs.microsoft.com/ja-jp/visualstudio/
Visual Studio 2017 の互換性https://www.visualstudio.com/ja-jp/productinfo/vs2017-compatibility-vsOptimize Visual Studio Startup Time | Microsoft Docshttps://docs.microsoft.com/en-us/visualstudio/ide/optimize-visual-studio-startup-timeCreate portable, custom editor options | Microsoft Docshttps://docs.microsoft.com/en-us/visualstudio/ide/create-portable-custom-editor-options
EditorConfig Visual Studio Pluginhttps://github.com/editorconfig/editorconfig-visualstudio
EditorConfig http://editorconfig.org/
editorconfig codestyle options by jmarolf · Pull Request #15029 · dotnet/roslyn https://github.com/dotnet/roslyn/pull/15029
EditorConfig - Visual Studio Marketplacehttps://marketplace.visualstudio.com/items?itemName=EditorConfigTeam.EditorConfig
リファレンス
参照: 行末の空白は EditorConfig で始末しましょう - Qiitahttp://qiita.com/spiegel-im-spiegel/items/a1b4d1ad2a6693ae33e4
Editor Config GitHubhttps://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties
ライセンスhttps://www.visualstudio.com/wp-content/uploads/2016/11/VS2017_ENT_PRO_RC_JPN_Eula.1041.pdf
How to: Migrate Extensibility Projects to Visual Studio 2017https://docs.microsoft.com/ja-jp/visualstudio/extensibility/how-to-migrate-extensibility-projects-to-visual-studio-2017
Visual Studio 2017 RCのC#コードスタイル機能について | OPC Diaryhttps://opcdiary.net/?p=33467
Visual Studio 2017 RC のライブ ユニット テスト – Visual Studio 日本チーム Bloghttps://blogs.msdn.microsoft.com/visualstudio_jpn/2016/11/25/live-unit-testing-visual-studio-2017-rc/
リファレンス