Visual Studio 2019、Git統合やAIによる入力補完、リモート開発などで多数の機能追加:バージョン16.7を正式リリース
Microsoftは「Visual Studio 2019 バージョン16.7」の一般提供を開始した。Git統合やIntelliSense、IntelliCode、リモート開発などにおいて、多くの機能を追加している。バージョン16.4以来の長期サービスリリースだ。
Microsoftは2020年8月5日(米国時間)、統合開発環境(IDE)の最新版「Visual Studio 2019 バージョン16.7」の一般提供を開始した。バージョン16.7はGit統合やIntelliSense、IntelliCode、リモート開発などにおいて、さまざまな機能追加が行われている。主な改良点は以下の通り。
Gitとの統合
「情報」バー
マージエディタが「Team Foundation Version Control」から分離され、Gitに特化した。手動による解決が必要なマージ競合があると、ファイル画面の最上部に新しく設置された金色の「情報」バーが、それを知らせる。
情報バーをクリックすると、マージエディタが表示される。タイトルとキャプションで、取り込むブランチと現在のブランチの名前が明示され、競合するブランチが区別しやすい。さらに、一致する行がそろえられ、単語レベルの違いが表示され、表示可能な空白が唯一の違いである場合はそれが表示され、競合を解析しやすくなっている。競合に焦点を当てるために、競合していない相違点を無視することも可能だ。ファイルレベルの追加/追加の競合を、双方向のマージで解決することもできる。
Gitの競合の解決
1回のクリックで、どちらか一方の全ての競合を解決するチェックボックスも追加されている。
Gitリポジトリウィンドウ
全画面を使ってGitアクティビティーに集中できる「Gitリポジトリウィンドウ」も新たに用意された。このウィンドウから、リポジトリのローカル、リモート、上流の全てのブランチを表示、管理できる。各ブランチを切り替え、それぞれの履歴グラフを表示することもできる。コミットをダブルクリックすると、コミットの詳細が表示される。
.NET開発の生産性向上
IntelliSenseのアップデート
DateTime/TimeSpan文字列リテラルにIntelliSenseの入力候補が用意された。DateTime/TimeSpan文字列リテラル内にカーソルを置き、[Ctrl]+[Space]キーを押すと、入力候補オプションと、各文字の意味についての説明が表示される。日時形式と例の両方が提供される。
IntelliCode、AIによる引数の入力補完
IntelliCodeでは、C#開発者に「メンバーの提案」が提供されるだけではなく、「AIによる引数の入力補完」も提供される。この機能では、メソッドを呼び出すときに「使用する可能性が最も高い」とする引数名にスターが付けられ、入力補完一覧の先頭に表示される。かっこ内への入力を始めるか、[Ctrl]+[Space]キー、[Space]キー、[Ctrl]+[J]キーを押すと、入力候補一覧が表示される。
IntelliCodeの提案
「IntelliCodeの提案」は、コード内の複数の場所で同様に編集する場合に役立つ。C#開発者の場合、これによってローカルで編集が追跡され、繰り返しが検出される。その後、適用される可能性のある他の場所に同じ編集を適用することが提案される。例えば、リファクタリングを適用可能な場所を見落としていた場合、こうした場所を見つけて修正するのにIntelliCodeの提案が役立つ。
提案は、Visual Studioのエディタでクイックアクションとして表示される。IntelliCodeの提案を示すクイックアクションのメニューオプションは、[Apply suggestion](提案を適用)と[Ignore suggestions like this](このような提案を無視)だ。提案された変更を採用する場合は、[Apply suggestion]を選ぶ。
[クイックアクションとリファクタリング]メニューのアップデート
[シグネチャの変更]ダイアログでパラメーターを追加できるようになった。メソッドの宣言または使用箇所にカーソルを置き、[Ctrl]+[.]キーを押して[クイックアクションとリファクタリング]メニューをトリガーし、[シグネチャの変更]を選択する。[シグネチャの変更]ダイアログで[追加]を選び、パラメーターを追加できる。
[パラメーターの追加]ダイアログ
[追加]を選ぶと、[パラメーターの追加]ダイアログが開く。[パラメーターの追加]では、型名とパラメーター名を追加できる。デフォルト値を使用してパラメーターを必須または省略可能にすることを選択できる。その後、呼び出しサイトで値を追加し、その値の名前付き引数を選択するか、TODO変数を導入することが可能だ。
TODO変数ではTODOがコードに挿入されるので、各エラーにアクセスし、それぞれの呼び出しサイトを個別に確認して「何を渡すか」を決定できる。省略可能なパラメーターについては、呼び出しサイトを完全に省略するオプションがある。
抑制演算子があるが効果がない場合の対処
抑制演算子があるが効果がないとき、警告とコード修正が表示されるようになった。正しい否定式を提案する2つ目のコード修正も利用できる。抑制演算子にカーソルを置き、[Ctrl]+[.]キーを押して、[クイックアクションとリファクタリング]メニューをトリガーする。さらに、次のいずれかを選択する。
- 演算子を完全に削除するには、[Remove operator (preserves semantics)](演算子を削除する《セマンティクスを残す》)を選択する。
- 式を否定するには、[Negate expression (change semantics)](式を否定する《セマンティクスを変更する》)を選択する。
- プロジェクトで利用できる場合、C# 9の新しい「not」パターンで式を否定することもできる。
デバッガの表示属性の追加
デバッガの表示属性をクラスに追加するためのクイックアクションが導入された。これにより、デバッガ内のプロパティをコード内にプログラムによってピン留めできる。
クラス名にカーソルを置き、[Ctrl]+[.]キーを押して[クイックアクションとリファクタリング]メニューをトリガーし、[Add 'DebuggerDisplay' attribute](「DebuggerDisplay」属性の追加)を選択する。
これにより、デバッガの表示属性がクラスの先頭に追加され、「ToString()」を返すautoメソッドが生成される。このメソッドを編集して、デバッガ内でピン留めするプロパティ値を返すことができる。
プロファイラ
新しい.NETパフォーマンスカウンタツールが導入された。このツールを使用して、Visual Studioプロファイラ内からdotnetカウンタを直接表示し、分析できる。dotnetカウンタは、CPU使用率や例外の発生率といった高レベルのパフォーマンス指標だ。これらの指標に注目することで、アプリケーションのパフォーマンスボトルネックを迅速に診断できるという。
このツールを試すには、[デバッグ]-[パフォーマンス プロファイラー]-[Checkmark .NET Performance Counters Tool](.NET パフォーマンスカウンターツールをチェックマーク)を選ぶ。
C++向け新機能
Address Sanitizer
「Address Sanitizer」は、メモリ破損のバグを見つけるのに有益なツールだ。Visual Studio 2019 バージョン16.4から、32ビットx86プロジェクト向けに提供されてきたが、新たに64bitプロジェクトとデバッグビルドがサポートされた。
C++20向け新機能
「C++20」の幅広い機能がSTL実装で実装された。その中には、「std::bit_cast」「constexpr std::array比較」「Rangesの部分的サポート」などが含まれる。
また、C++のIntelliSenseが、一部のC++20機能(Conceptsや指定イニシャライザなど)の初期サポートによって拡張された。C++20モジュールの実験的サポートを利用している場合、.cppmおよび.ixxファイルがC++として認識され、カラーライザーとIntelliSenseでそのように扱われる。
Linuxをターゲットとしたリモート開発
Linuxをターゲットとしたリモート開発を行う開発者向けの改良も数多く行われた。
デフォルトリモートSSH接続の編集と設定
接続マネージャーで、デフォルトのリモートSSH接続を編集、設定できるようになった。既存のリモート接続を(IPアドレスが変更された場合などに)編集したり、デフォルトの接続を「CMakeSettings.json」「launch.vs.json」で使われるように設定したりすることができる。
「CMake」プロジェクトとLinuxディストリビューションおよびシェルのデバッグに対するサポートの拡張
「gdbserver」を使ってリモートシステム上で「CMake」プロジェクトをデバッグするためのサポートが追加された。これはターゲットシステムが、gdbを実行するためのリソースを持っていない可能性がある、組み込み開発のシナリオで特に便利だ。
また、Linuxの幅広いディストリビューションおよびシェルのサポートが拡張された。例えば、「ConnectionManager.exe」を使って新しい「shell」プロパティを設定することで、デフォルトのシェルをzshに設定できるようになった。
さらに、「MSBuild」を使ってLinuxアプリケーションを作成している場合、「Ninja」を使って差分ビルドを速めることも可能になった。この機能は、[全般]プロパティページで[インクリメンタルビルドを有効にする]を[With Ninja](Ninjaを使用する)に設定することで選択できる。
WPF/UWP開発向けXAMLツールの新機能
「デザイン時データ」機能
これまでは、新しい空のコントロールや、実行時にデータバインディングによってデータが反映される新しいコントロールを追加する場合、「最終結果がどのようなものになるか」がデザイン時に分かりにくいという問題があった。これは、まだデータバインディングやデータソースがない場合は特に不便だ。
そこで「デザイン時データ」機能が導入され、ビルトインコントロールの各XAMLプロパティについて、XAMLデザイナー内でのみ表示され、バイナリにコンパイルされない値を簡単に設定できるようになった。この機能を使うには、目的のプロパティの前に「d:」を付ける。これによってXAMLデザイナーで、d:が付いたプロパティの値を見ることができる。アプリケーションの実行時にはそれらのプロパティは、d:なしで指定された値を持つ。
この機能はバージョン16.7では、WPF(Windows Presentation Foundation)およびUWP(Universal Windows Platform)のデフォルトのコントロールを全てサポートする。今後のバージョンでは、サードパーティー製およびカスタムコントロールをサポートする予定だ。
XAMLデザイナー更新ボタン
XAMLデザイナーに更新ボタンが追加された。これにより、レンダリングの問題を解決するのにデザイナービューを閉じ、再び開く必要がなくなった。左下のアイコン領域にあるズームレベルインジケーター近くの更新ボタンを押すだけで済む。
XAMLコードエディタ
XAMLコードエディタが「WPF .NET Core」「WPF .NET Framework」「Xamarin.Forms」プロジェクトで、カラーコードの隣にカラーアイコンを表示するようになった。
サポート期間
Visual Studio 2019 バージョン16.7は、Visual Studio 2019でサポートされる3番目のサービスベースラインであり、次のサービスベースラインのリリース後1年間、修正プログラムとセキュリティ更新プログラムが提供される。
バージョン16.7の一般提供開始に伴い、最新のサービスベースラインだったバージョン16.4は今後12カ月サポートされ、2021年10月にサポート対象外になる。また、バージョン16.1、16.2、16.5、16.6がサポート対象外になった。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Microsoft、「Visual Studio 2019 バージョン16.5」を正式リリース
Microsoftは、「Visual Studio 2019 バージョン16.5」の一般提供を開始した。.NETモバイル開発など多くの新機能を提供する。2019年4月初めにリリースした「Visual Studio 2019」のマイナーアップデート版に当たる。 - Microsoft、「Visual Studio Online」プレビュー版の新機能を紹介
Microsoftは、2019年11月から公開中の「Visual Studio Online」パブリックプレビュー版に対して、現在までに搭載した主な新機能を紹介した。環境のカスタマイズやプロジェクトのサポートなどを改善している。 - Microsoft、「Visual Studio 2019 バージョン16.3」を正式リリース
Microsoftは、2019年4月初めにリリースした「Visual Studio 2019」のマイナーアップデート版「Visual Studio 2019 バージョン16.3」の一般提供を開始した。.NET Core 3.0対応などが目玉だ。