Microsoft、「Visual Studio 2019 バージョン16.8」を正式リリース:Gitがソース管理のデフォルトに
Microsoftは「Visual Studio 2019 バージョン16.8」の一般提供を開始した。Git管理やC++対応、IntelliCode、.NET、XAML、Webツールなどに対して、多くの機能強化を施した。
Microsoftは2020年11月10日(米国時間)、統合開発環境(IDE)の最新版「Visual Studio 2019 バージョン16.8」の一般提供を開始した。Git管理やC++対応、IntelliCode、.NET、XAML、Webツールなどに対して、多くの機能強化を施した。主な改良点は次の通り。
Git管理の生産性を向上
デフォルトのソース管理プロバイダーを、TFVC(Team Foundation Version Control)からGitへと変更した。[Git]メニューからリポジトリを作成、複製したり、開いたりできる。統合されたGitツールウィンドウを使って、コード変更のコミットやプッシュ、ブランチの管理、リモートリポジトリの最新状態の維持、マージの衝突の解決などができる。
C++20機能のサポートを強化
C++の次期標準である「C++20」対応も進んだ。「/std:c++latest」ヘッダを用いることで、C++20の主要機能を全て利用できる。
コンパイラや標準ライブラリ、IDEを改善しており、例えば同じプロジェクトで「モジュール」「コルーティン」、一部の「範囲」を使用できる。
C++20コルーティンを「/std:c++latest」と「<coroutine>」ヘッダでサポートした。従来の動作は「<experimental/coroutine>」と「/await switch」でサポートしていた。ヘッダユニットと実験的なMSBuildのサポートによって、モジュールの依存関係を自動的に解決できるようになった。
C++の範囲ベースのアルゴリズムは大部分がサポートされているものの、範囲関連の全機能が利用できるまでには至っていない。
IntelliSenseも、C++20の「<concepts>」ヘッダと「<ranges>」ヘッダ、概念の定義の名前変更、参照をサポートするようになった。
STL関連の機能を強化し最適化した
Standard Template Library(STL)もC++20範囲機能の多くをサポートした。STLの他の機能強化としては、「std::atomic_ref」「std::midpoint and std::lerp」「std::execution::unseq」の完全なサポートや、「std::reverse_copy」の最適化などがある。
条件付きのトリビアルな特殊メンバ関数もMicrosoft Visual C++(MSVC)でサポートされるようになった。
C17機能をサポート
C対応も改善した。C11とC17の全ての必須機能は、「/std:c11」スイッチと「/std:c17」スイッチを使うことで対応できる。これらの機能には次の内用が含まれる。
- _Pragma
- restrict
- _Noreturnと<stdnoreturn.h>
- _Alignas、_Alignof、<stdalign.h>
- _Genericと<tgmath.h>のサポート
なお、オプション機能はサポートされていない。
リンク時間の短縮
C++を用いた開発の生産性を高める多数の改善を施した。
マルチスレッドでのpdb(プログラムデータベース)の作成により、「/debug:full」リンクのパフォーマンスが向上した。幾つかの大規模なアプリケーションや大規模なゲーム開発(AAAランク)では、リンクが2〜4倍高速になっている。
CMakeの新しいプロファイリング機能を利用できる
Visual Studioに付属するCMakeのバージョンがCMake 3.18にアップグレードされた。これにより、CMakeの新しいプロファイリング機能が利用できるようになった。
Linuxコアダンプのデバッグが容易に
Visual StudioからリモートLinuxシステムやWSL上で、Linuxコアダンプを直接デバッグできるようになった。
Linuxプロジェクトで見つからないビルドツールがある場合、ツールバーに警告が表示されて、不足しているツールがエラー一覧に明記されるようになった。
加えて、Visual Studioデバッガはchar8_t をサポートした。
IntelliSenseコードリンターが使いやすく
コードをエディタに入力する際にリンターと修正を使用できるようになった。算術オーバーフローや初期化されていないローカル変数、整数除算の結果をfloatに変換するといった警告や修正を取得できるようになった。
設定するには[ツール]−[オプション]−[テキスト エディター]−[C/ C++]−[コードスタイル]−[リンター]−[Linter + Fixups](リンターおよび修正)というメニュー階層を使う。
加えてコード分析ツールが、業界標準の静的な分析ログ形式であるSARIF 2.1をサポートした。
IntelliSenseサポートを含むLLVM(clang-cl)ツールセットを使って、Arm64プロジェクトのビルド、デプロイ、デバッグも可能になった。
AMXイントリンシック
Intel AMX(Advanced Matrix Extensions)イントリンシックのサポートがコンパイラに組み込まれた。
.NET開発の生産性向上
.NETコンパイラプラットフォームでRoslynアナライザは、C#コードやVisual Basicコードの安全性、パフォーマンス、デザインなどの問題を検査できる。.NET 5.0から、これらのアナライザが.NET SDKに含まれるようになった。.NET 5.0以降をターゲットとするプロジェクトでは、デフォルトで有効になる。従来バージョンの.NETをターゲットとするプロジェクトでは、[プロジェクトのプロパティ]ウィンドウで[Enable .NET analyzers]チェックボックスをオンにすると、コードアナライズを有効にできる。
インラインパラメーター名のヒントに対応
C#とVisual Basicがインラインパラメーター名のヒントをサポートした。この機能は、関数呼び出しの各引数の前に、リテラルや型変換されたリテラル、オブジェクトインスタンス化のパラメーター名のヒントを挿入するものだ。
IntelliCodeが機械学習対応になった
C#開発者は、IntelliCodeの機械学習モデルの自動トレーニングを有効にできるようになった。これを有効にすると、IntelliCodeは、Visual Studioのコードベースや、CI(継続的インテグレーション)ワークフローの一部として見つかったユニークなコードパターンに基づいて機械学習モデルをトレーニングし、文脈に応じてインラインで、パーソナライズされたコード入力候補を提案する。
IntelliCodeは、コードが更新されるたびにモデルを再トレーニングし、モデルがコードとともに変更されるようにする。
IntelliCodeチーム入力候補を使用すると、自分のコードベース用のみのモデルをトレーニングし、自分のコードにアクセスできる全てのユーザーとそのモデルを共有できる。また、CIビルドパイプラインにタスクを含め、自動的にそれを最新の状態に保つこともできる。
.NETのリファクタリング
抑制演算子があるときに、「C# 9」の「not」について新しいパターンマッチング構文を導入できるリファクタリングが追加された。
カーソルをサプレッション演算子の上に置き、[Ctrl]+[.]キーを押すことで、クイックアクションとリファクタリングメニューを起動できる。ここでパターンマッチングの使用を選択する。
C#とVisual Basicの両方で、選択したクラスのメンバーを新しい基底クラスに抽出するExtract Base Classリファクタリングも可能になった。
インラインメソッドリファクタリングも導入された。これにより、1つのステートメント本体内で使用されているstaticメソッドやinstanceメソッド、extensionメソッドを、元のメソッド宣言を削除するオプションと置き換えることができる。
この機能を使うには、メソッドの使用にカーソルを合わせ、[Ctrl]+[.]キーを押して、[クイックアクションとリファクタリング]メニューを選ぶ。次に、2つのオプションのうちいずれかを選択する。
- Inline インラインメソッド宣言を削除する
- Inline and keep 元のメソッド宣言を維持する
デバッガを改良
LinuxコアダンプをIDEに直接ドラッグ&ドロップし、すぐにデバッグを開始できる。
.NETでの自動分析
ここ数年、.NETプラットフォームで非同期(async)プログラミングに課題があり、効果的な開発が困難だった。そこで今回、Sync-over-AsyncとThreadpoolの枯渇を特定する際に役立つマネージドメモリダンプアナライザが導入された。
メモリホットパス自動解析では、Diagnostic Memory Toolウィンドウのフレイムアノテーションを使用して、そのメモリヒープ内の支配オブジェクトタイプを直感的に確認できる。
XAMLデータバインドエラーの検出と診断
XAMLデータバインドエラーの診断ツールを強化するため、XAMLバインドエラーインジケーターアイコンと、XAMLバインドエラーウィンドウが導入された。
XAMLバインドエラーインジケーターアイコンが、WPF(Windows Presentation Foundation)とUWP(Universal Windows Platform)プロジェクトのアプリケーション内ツールバーに追加された他、Xamarin.Formsを含む全てのXAMLプロジェクトでライブビジュアルツリーにも追加された。このアイコンは、少なくとも1つのバインドエラーが検出されると、赤いインジケーター表示に変わる。アイコンをクリックすると、新しいXAMLバインドエラーウィンドウが表示される。
XAMLバインドエラーウィンドウは、WPFやUWP、WinUI、Xamarin.Formsプロジェクトで利用できる。このウィンドウは、バインドエラー情報を扱うために多彩なユーザーインタフェースを提供する。
さらに、.NET 5(RC2以降)でWPFをターゲットとするユーザー向けに、バインドエラーの原因究明を支援する機能も追加された。
Windowsフォームデザイナー
新しい内部コンポーネントアーキテクチャを採用することで、メモリ割り当てが大幅に減少し、より高速で信頼性の高い動作が可能になり、.NET 5のWindowsフォームデザイナーのパフォーマンスが向上した。
次期サービスベースラインが「Visual Studio 2019 バージョン16.9」に更新された
Microsoftは、Visual Studio 2019の次期バージョン「Visual Studio 2019 バージョン16.9」の「Preview 1」もリリースした。Visual Studio 2019 バージョン16.9は、2020年内に正式リリースされる見通しだ。
Visual Studio 2019 バージョン16.9は、Visual Studio 2019の4番目の「サービスベースライン」となる。
今回のバージョン16.8のような標準マイナーバージョンリリースは、次のマイナーアップデートがリリースされるまでしか修正プログラムが提供されない。これに対し、サービスベースラインでは、次のサービスベースラインのリリースから12カ月後まで、修正プログラムが提供される。Visual Studio 2019の3番目のサービスベースラインは、2020年8月にリリースされた「Visual Studio 2019 バージョン16.7」だ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Visual Studio 2019、Git統合やAIによる入力補完、リモート開発などで多数の機能追加
Microsoftは「Visual Studio 2019 バージョン16.7」の一般提供を開始した。Git統合やIntelliSense、IntelliCode、リモート開発などにおいて、多くの機能を追加している。バージョン16.4以来の長期サービスリリースだ。 - Microsoft、「Visual Studio 2019 バージョン16.5」を正式リリース
Microsoftは、「Visual Studio 2019 バージョン16.5」の一般提供を開始した。.NETモバイル開発など多くの新機能を提供する。2019年4月初めにリリースした「Visual Studio 2019」のマイナーアップデート版に当たる。 - IntelliCodeが「リファクタリング」を助ける、Visual Studio 2019 バージョン16.3の改善
Microsoftがリリースした「Visual Studio 2019 バージョン16.3 Preview 3」では、IntelliCodeがリファクタリングを支援する。開発者がコードにある変更を施すと、類似したコードのパターンを探し出すというもの。例えば開発者が自ら正規表現を工夫するよりも楽になる。