検索
ニュース

Microsoft、「Visual Studio 2019 バージョン16.8」を正式リリースGitがソース管理のデフォルトに

Microsoftは「Visual Studio 2019 バージョン16.8」の一般提供を開始した。Git管理やC++対応、IntelliCode、.NET、XAML、Webツールなどに対して、多くの機能強化を施した。

Share
Tweet
LINE
Hatena

 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ツールウィンドウを使って、コード変更のコミットやプッシュ、ブランチの管理、リモートリポジトリの最新状態の維持、マージの衝突の解決などができる。


Git管理の生産性が向上した(出典:Microsoft、クリックで再生)

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>」ヘッダ、概念の定義の名前変更、参照をサポートするようになった。


IntelliSenseがC++20に対応した(出典:Microsoft

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コアダンプのデバッグ管理の生産性が向上した(出典:Microsoft

 Linuxプロジェクトで見つからないビルドツールがある場合、ツールバーに警告が表示されて、不足しているツールがエラー一覧に明記されるようになった。


改善された警告メッセージ(出典:Microsoft

改善されたエラー報告(出典:Microsoft

 加えて、Visual Studioデバッガはchar8_t をサポートした。

IntelliSenseコードリンターが使いやすく

 コードをエディタに入力する際にリンターと修正を使用できるようになった。算術オーバーフローや初期化されていないローカル変数、整数除算の結果をfloatに変換するといった警告や修正を取得できるようになった。

 設定するには[ツール]−[オプション]−[テキスト エディター]−[C/ C++]−[コードスタイル]−[リンター]−[Linter + Fixups](リンターおよび修正)というメニュー階層を使う。


入力時にリンターが動作しているところ(出典:Microsoft

 加えてコード分析ツールが、業界標準の静的な分析ログ形式である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]チェックボックスをオンにすると、コードアナライズを有効にできる。


[プロジェクトのプロパティ]ウィンドウでコード分析を有効にできる(出典:Microsoft

インラインパラメーター名のヒントに対応

 C#とVisual Basicがインラインパラメーター名のヒントをサポートした。この機能は、関数呼び出しの各引数の前に、リテラルや型変換されたリテラル、オブジェクトインスタンス化のパラメーター名のヒントを挿入するものだ。


インラインパラメーター名のヒントの例(出典:Microsoft

IntelliCodeが機械学習対応になった

 C#開発者は、IntelliCodeの機械学習モデルの自動トレーニングを有効にできるようになった。これを有効にすると、IntelliCodeは、Visual Studioのコードベースや、CI(継続的インテグレーション)ワークフローの一部として見つかったユニークなコードパターンに基づいて機械学習モデルをトレーニングし、文脈に応じてインラインで、パーソナライズされたコード入力候補を提案する。

 IntelliCodeは、コードが更新されるたびにモデルを再トレーニングし、モデルがコードとともに変更されるようにする。


IntelliCodeチーム入力候補を有効にできる(出典:Microsoft、クリックで再生)

 IntelliCodeチーム入力候補を使用すると、自分のコードベース用のみのモデルをトレーニングし、自分のコードにアクセスできる全てのユーザーとそのモデルを共有できる。また、CIビルドパイプラインにタスクを含め、自動的にそれを最新の状態に保つこともできる。

.NETのリファクタリング

 抑制演算子があるときに、「C# 9」の「not」について新しいパターンマッチング構文を導入できるリファクタリングが追加された。

 カーソルをサプレッション演算子の上に置き、[Ctrl]+[.]キーを押すことで、クイックアクションとリファクタリングメニューを起動できる。ここでパターンマッチングの使用を選択する。


リファクタリングで新しいパターンマッチングを利用しているところ(出典:Microsoft

 C#とVisual Basicの両方で、選択したクラスのメンバーを新しい基底クラスに抽出するExtract Base Classリファクタリングも可能になった。


Extract Base Classリファクタリング(出典:Microsoft

 インラインメソッドリファクタリングも導入された。これにより、1つのステートメント本体内で使用されているstaticメソッドやinstanceメソッド、extensionメソッドを、元のメソッド宣言を削除するオプションと置き換えることができる。

 この機能を使うには、メソッドの使用にカーソルを合わせ、[Ctrl]+[.]キーを押して、[クイックアクションとリファクタリング]メニューを選ぶ。次に、2つのオプションのうちいずれかを選択する。

  • Inline インラインメソッド宣言を削除する

インラインメソッド宣言を削除する(出典:Microsoft
  • Inline and keep 元のメソッド宣言を維持する

元のメソッド宣言を維持する(出典:Microsoft

デバッガを改良

 LinuxコアダンプをIDEに直接ドラッグ&ドロップし、すぐにデバッグを開始できる。


Linuxコアダンプファイルのデバッグ(出典:Microsoft

.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バインドエラーインジケータータアイコンが赤くなっているところ(出典:Microsoft

 XAMLバインドエラーウィンドウは、WPFやUWP、WinUI、Xamarin.Formsプロジェクトで利用できる。このウィンドウは、バインドエラー情報を扱うために多彩なユーザーインタフェースを提供する。

 さらに、.NET 5(RC2以降)でWPFをターゲットとするユーザー向けに、バインドエラーの原因究明を支援する機能も追加された。


新しいXAMLバインドエラーウィンドウの表示例(出典:Microsoft

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.

ページトップに戻る