注
サポートされているバージョンの Visual Studio 2017 はバージョン 15.9 です。
Important
これは Visual Studio の最新バージョンではありません。 最新のリリースをダウンロードするには、 https://visualstudio.microsoft.com/downloads/ にアクセスし、 Visual Studio 2022 リリース ノートを参照してください。
Visual Studio ブログ
Visual Studio ブログ は、Visual Studio エンジニアリング チームからの製品分析情報の公式ソースです。 Visual Studio 2017 バージョン 15.8 リリースの詳細については、次の記事を参照してください。
- Visual Studio 2017 バージョン 15.8 -- 最新のブログ投稿をお読みください。
Visual Studio 2017 バージョン 15.8 リリース
- 2018 年 11 月 2 日 -- Visual Studio 2017 バージョン 15.8.9 サービス更新プログラム
- 2018 年 10 月 24 日 -- Visual Studio 2017 バージョン 15.8.8 サービス更新プログラム
- 2018 年 10 月 10 日 -- Visual Studio 2017 バージョン 15.8.7 サービス更新プログラム
- 2018 年 10 月 2 日 -- Visual Studio 2017 バージョン 15.8.6 サービス更新プログラム
- 2018 年 9 月 20 日 -- Visual Studio 2017 バージョン 15.8.5 サービス更新プログラム
- 2018 年 9 月 11 日 -- Visual Studio 2017 バージョン 15.8.4 サービス更新プログラム
- 2018 年 9 月 6 日 -- Visual Studio 2017 バージョン 15.8.3 サービス更新プログラム
- 2018 年 8 月 28 日 -- Visual Studio 2017 バージョン 15.8.2 サービス更新プログラム
- 2018 年 8 月 17 日 -- Visual Studio 2017 バージョン 15.8.1 サービス更新プログラム
- 2018 年 8 月 14 日 -- Visual Studio 2017 バージョン 15.8 マイナー リリース
Important
Visual Studio 2017 バージョン 15.8 セキュリティ アドバイザリに関する通知
- 2018 年 10 月 10 日 -- Visual Studio 2017 バージョン 15.8.7 サービス更新プログラム
- 2018 年 9 月 11 日 -- Visual Studio 2017 バージョン 15.8.4 サービス更新プログラム
- 2018 年 8 月 14 日 -- Visual Studio 2017 バージョン 15.8
- 2018 年 7 月 10 日 -- Visual Studio 2017 バージョン 15.8 Preview 4
- 2018 年 6 月 26 日 -- Visual Studio 2017 バージョン 15.8 Preview 3
- 2018 年 5 月 8 日 -- Visual Studio 2017 バージョン 15.8 Preview 1
15.8 の注目すべき新機能の概要
- インストーラーでは、 インストールを開始する前にすべてのファイルをダウンロードするオプションが提供されるようになりました。
- プロジェクトのアンロード/リロードとブランチの切り替え中の パフォーマンス が向上しました。
- ドキュメントの自動復元を無効にすると、ソリューションの読み込み時間を改善できます。
- 複数 のテスト プロジェクトで大規模なソリューションを実行しながら、テスト パフォーマンスが大幅に向上しました。
- Visual Basic では、パフォーマンスが大幅に 向上しました。
- パフォーマンス プロファイル では、データ収集を一時停止または再開する機能が提供され、新しい .NET オブジェクト割り当て追跡ツールが追加されました。
- パフォーマンス プロファイル用の CPU 使用率ツール が改善されました。
- コードクリーンアップ、転化リファクタリング、囲みブロックへの移動、マルチキャレットのサポート、新しいキーボード プロファイルなど、新しい 生産性 機能が追加されました。
- 拡張機能のデバッグ時にターゲット インスタンス を選択できます。
- 発行の概要ページから スナップショット デバッガー を直接起動します。
-
を完全にサポートし、非同期コードのスタック トレースを大幅に改善した新しい言語バージョンである
Span<'T>。 - F # ツールのパフォーマンスが向上し、 Ctrl キーを押しながらクリック して 定義に移動するなどの新機能が追加されました。
- C++ ツールセットの機能強化には、SSA オプティマイザーとリンカーの機能強化が含まれます。
- C++ クロスプラットフォーム開発 の追加には、ClangFormat の更新プログラムと、MinGW、Linux、および Windows 用の CMake と Open Folder の構成テンプレートが含まれます。
- C++ の生産性の変更には、テンプレート IntelliSense、マクロに関するクイック ヒントのヒント、constexpr 電球への変換、エディター内のコード分析の波線などがあります。
- C++ デバッグの 機能強化には、 マイ コードの更新プログラム と新しいデータ ブレークポイントが含まれます。
- JavaScript と TypeScript には多くの機能強化と機能があります。
- Web プロジェクトで クライアント側ライブラリ を管理できるようになりました。
- ASP.NET Core Web プロジェクト用の新しい単一プロジェクト Docker コンテナー エクスペリエンス を追加しました。
- このリリースで 行われた発行の機能強化 により、Docker イメージのタグをカスタマイズできるようになりました。
- Xamarin の機能強化には、Xcode 9.4 とよりスマートな Android インクリメンタル ビルドのサポートが含まれます。
- Windows 10 April 2018 Update では、 Google の Android エミュレーターを Hyper-V と並 べて使用できます。
- Xamarin.Android デザイナー用の分割ビュー エディターを追加しました。
- Xamarin.Forms Previewer でツールボックスがサポートされ、分割ビュー エディターに移動しました。
- Python 3.7.0rc1 で クロス言語 デバッグを使用できるようになりました。
- ローカル の Azure 関数設定を Azure に移行すると、 新しい値が表示されるようになりました。
- Azure Functions のサポートが追加され、[Azure への 継続的デリバリーの構成 ] ダイアログに新しいターゲット ホストが追加されました。
- テスト エクスプローラーの 概要ウィンドウが 改善され、より有益なテスト状態が提供されるようになりました。
- .NET テスト アダプター拡張機能: 破壊的変更と非推奨。
- 言語サーバー プロトコルの ネイティブ サポート が追加されました。
- これで、.NET Framework プロジェクト ASP.NET シークレットがサポート されるようになりました。
- Visual Studio を使用すると、 .NET Framework アプリ ASP.NET アップグレードしてビルドのパフォーマンスを向上させることができます。
- Visual Studio では、 4.7.2 ランタイムが含まれるサポートされているプラットフォームに .NET Framework 4.7.2 開発ツールが提供されるようになりました。
- 非同期自動読み込みパッケージ は、スタートアップとソリューションの読み込みが完了するまで遅延します。
- ビルド ツール Visual Studio 2017 で ワークフロー がサポートされ、VSSDK が含まれるようになりました。
- .NET Core プロジェクトでの外部ファイルの変更に対して Git と TFS の状態が正しく更新されるようになりました。
- .NET Core SDK 2.1.400 が含まれています。
15.8 で修正された上位の問題
15.8 で対処された、お客様から報告された問題を次に示します。
- SSDT は Visual Studio Build Tools 2017 には存在しません。
- アップグレード中に Anaconda がアンインストールに失敗する (エラー 87)。
- 15.7 にアップグレードすると、 PackageId:Anaconda3.Exe.x64 というエラーが発生します。PackageAction:Uninstall;ReturnCode:87;。
- Visual Studio の更新プログラムでは、MakePri 0x80073b0fで UWP BuildError が生成され、ソリューションでエラーが0xdef00532されます。
- VS 2017 には、ASP.NET Core エクスポート テンプレート機能に関する問題があります。
- テスト エクスプローラー (SpecFlow テスト): 機能ファイルではなく、フィーチャ クラス ファイルにアクセスします。
- C++ プロジェクトからエクスポートされたプロジェクト テンプレートには、vcxproj と vcxproj.filters のみが含まれており、ソースまたはヘッダーは含まれます。
- x64 の codegen が正しくありません。
- ソリューション フォルダーの右クリック コンテキスト メニューは、Enterprise 15.8 Preview 2 では何も行いません。
- VS2017 では、3 台のモニターで使用する画面の位置とサイズは記憶されません。
- UTF8-no-BOM では、差分ウィンドウに誤ったエンコード警告が表示されます。
- 単語をダブルクリックすると、単語全体ではなく、単語の先頭のみが選択されます。
- VS2015 と VS2017 では、$(OutDir) と $(IntDir) の両方がまったく異なる設定を使用しているにもかかわらず、$(SolutionDir) によって定義されたパスに空のデバッグ フォルダーが作成されます。
- VS2017 を使用して日本語環境で MFC ダイアログ ベースのプロジェクトを作成すると、ダイアログを編集するとビルドでエラーが発生します。
- Visual Studio インストーラーに進行状況テキストの表示をダウンロードします。
- ソリューション エクスプローラーで実行可能プロジェクトを右クリックする -> Debug -> 新しいインスタンスを開始すると、ソリューションから開始するランダム なプロジェクトが選択されます。
- DEVENV コマンド ラインのビルドが失敗する: この操作は UI スレッドでのみ実行できます。
- ファイルの種類を検索して置き換えます。
- フォントの色と背景色のため、パッケージ マネージャー コンソールでエラー メッセージが読み取れなくなります。
- Visual Studio Community 2017 15.4.1 Web 発行プレビューが失敗し、承認されていません。
- VS 2017 for XAML ビルドでテスト結果を開きます。
Visual Studio 2017 バージョン 15.8 で修正された、お客様から報告されたすべての問題を確認します。
15.8 の新機能の詳細
Visual Studio 2017 バージョン 15.8.0
リリース日: 2018 年 8 月 14 日
15.8 の新機能
Install
これで、インストールを開始する前にすべてのインストール ファイルをダウンロードするオプションが表示されます。
- この新しいオプションを使用するには、インストーラーで [すべてダウンロードしてからインストール] オプションを選択します (図 1)。 インターネット接続が遅い場合は、このオプションをお勧めします。
- 既定のオプションは[ダウンロード中にインストール]のままで、並列でダウンロードしてインストールします。
Performance
このリリースには、次のパフォーマンスの向上が含まれています。
- ソリューションの再読み込みが不要になったため、大規模なソリューションでは C#、VB、および C++ プロジェクトのブランチ切り替えがはるかに高速になります。
- 大規模なソリューションの C# および VB プロジェクトの小さなセットをアンロードして再読み込みする時間を数分から数秒に短縮しました。
- 特定の種類のファイルまたはデザイナーを再度開くとソリューションの読み込みが遅れる可能性があるので、前のセッションで開いていたドキュメントを再度開く機能を無効にするオプションを追加しました。
- [>] でこのオプション>切り替えます。
パフォーマンスのテスト
複数のテスト プロジェクトを含む大規模なソリューションでいくつかのテストを実行すると、パフォーマンスが大幅に向上しました。 ラボでは、MSTests が 10,000 を超えるソリューションで、最大 82% 高速で 1 回のテストを実行しました。
Visual Basic のパフォーマンスの向上
Visual Basic では、パターン CInt(Fix(number)) を使用して整数以外の型から整数に変換するときに、パフォーマンスが大幅に向上するようになりました。
パフォーマンス プロファイル
このリリースには、次のパフォーマンス プロファイリングの機能強化が含まれています。
一時停止状態でプロファイリングを開始する機能を追加しました。
パフォーマンス プロファイラー (Alt - F2) の CPU 使用率ツールを一時停止状態で起動できるようになりました (図 2)。 これは、CPU 使用率の調査に値するシナリオを待っている間に役立ちます。 起動時に CPU 使用率の収集が無効になっている場合、パフォーマンス プロファイラーは、明示的に有効になるまで CPU 使用率のサンプル スタック データを収集しません。 これにより、収集および分析するデータの量が少なくなるため、パフォーマンス調査がより効率的になります。
CPU 使用率サンプル コレクションを無効にしてセッションを開始するには、[パフォーマンス プロファイラー] 起動ページの [ CPU 使用率] の横にある歯車アイコンをクリックします。 [CPU 使用率] プロパティ ページで、[ CPU プロファイルの有効化 (サンプリング)] をオフにし、[ OK] を クリックして設定を保存します。
(図 2)CPU 使用率ツールの設定 ターゲット アプリケーションを起動すると (パフォーマンス プロファイラーの起動ページで [スタート] をクリック)、CPU 使用率グラフ (図 3) が表示され、CPU プロファイルを制御できます。 CPU 使用率サンプル スタック データ収集を有効にするには、ビューの中央で [CPU プロファイルを有効にする ] を選択するか、CPU 使用率グラフのすぐ下にある [ CPU プロファイルの記録 ] をクリックします。 [ CPU プロファイルの記録 ] をクリックして、サンプル データ収集を何度でも有効または無効にすることができます。 CPU 使用率グラフの色が変わり、その時点でサンプル コレクションが有効または無効になっているかどうかを示します。
(図 3)CPU 使用率グラフ
.NET オブジェクト割り当て追跡ツールを追加しました。
- .NET オブジェクト割り当て追跡ツールは、パフォーマンス プロファイラーから使用できるツールのファミリに参加します。 パフォーマンス プロファイラー セッションに対してこのツールを呼び出すと、ターゲット アプリケーションで発生するすべての .NET オブジェクト割り当てのスタック トレースのコレクションが開始されます。 このスタック データは、オブジェクトの種類とサイズの情報と共に分析され、アプリケーションのメモリ アクティビティの詳細が表示されます。 コード内の割り当てパターンをすばやく特定し、異常を特定できます。 さらに、ガベージ コレクション (GC) イベントの場合、収集および保持されたオブジェクトを簡単に特定し、アプリケーションのメモリ使用量を支配するオブジェクトの種類をすばやく特定できます。
- これは、API ライターが割り当てを最小限に抑えるのに特に役立ちます。 多くのアプリケーションは、診断データ収集に関連するバッファー制限をオーバーランしますが、API の主要なシナリオを実行する小規模なテスト アプリケーションは非常に適切に診断できます。 テスト アプリケーションの実行中、パフォーマンス プロファイラーには、ライブ オブジェクト (カウント) の線グラフと、オブジェクト デルタ (% 変更) バー グラフが表示されます。
- .NET オブジェクト割り当て追跡ツールを使用するには、パフォーマンス プロファイラーの起動ページ (図 4) を表示し、プロファイリングするターゲット (既定のターゲットはソリューションのスタートアップ プロジェクト) を選択し、[使用可能なツール] の 下にある [.NET オブジェクト割り当て追跡 ] をオンにして、[ 開始] をクリックします。
(図 4)パフォーマンス プロファイラーの起動ページ
パフォーマンス プロファイリング (CPU 使用率)
このリリースには、パフォーマンス プロファイラーの CPU 使用率ツールに対する次の機能強化が含まれています ( ALT + F2 を使用)。
- [呼び出しツリー] ビューに、既定で論理呼び出し履歴による非同期実行が表示されるようになりました。 この動作をオフにするには、[CPU 使用率] メイン ビューの [フィルター] ドロップダウンで [ 非同期コードの合成 ] オプションをオフにします。
- モジュール (dll) およびモジュール内の関数ごとにパフォーマンス情報を表示する Modules/Functions ビューを追加しました。 CPU 使用率のメイン ビューで関数を選択するときに使用できるコンテキスト メニューから、または呼び出しツリービューまたは呼び出し元/呼び出し先ビューの [ビュー] ドロップダウンから、モジュール/関数ビューを表示できます。
- CPU 使用率ツールのメイン ビューの CPU 使用率グラフにインスタンス表示が追加されました。 いずれかの CPU 使用率ビューに表示されている関数をダブルクリックすると、関数の実行時 (スタック上など) にインスタンスを表示できます。
生産性
このリリースには、次の生産性の強化が含まれています。
- C# 開発では、ドキュメントの書式設定 (Ctrl + K、D、Ctrl + E、D) を使用して、追加のコード クリーンアップを実行できます。 Tools>Options>Text Editor>C#>Code Style>Formatting>General に移動してクリーンアップを構成します。
-
Ctrl + または Alt + Enter キーを使用して、リファクタリングとクイック アクションを追加しました。
-
If を反転 すると、if-else ステートメントでロジックを反転できます。
ifキーワードにカーソルを置き、このリファクタリングをトリガーします。 - メソッド呼び出しサイトからパラメーターを追加すると、メソッド呼び出しサイト に引数を追加し、 クイック アクションとリファクタリングをトリガーすることで、メソッドにパラメーターを追加できます。
-
不要なかっこを削除すると、 コンパイルに不可欠ではない二項演算子の周りのかっこが削除されます。 このスタイルルールは、 Tools>Options>Text Editor>C#>Code Style>General または .editorconfig を使用して構成できます。
dotnet_style_parentheses_in_arithmetic_binary_operatorsdotnet_style_parentheses_in_relational_binary_operatorsdotnet_style_parentheses_in_other_binary_operatorsdotnet_style_parentheses_in_other_operators
-
割り当てと戻り値ステートメントで三項条件を使用 すると、 Tools>Options>... または .editorconfig を使用してスタイル ルールとして構成することもできます。
dotnet_style_prefer_conditional_expression_over_assignmentdotnet_style_prefer_conditional_expression_over_return
-
If を反転 すると、if-else ステートメントでロジックを反転できます。
- [ すべてに移動 ] ウィンドウに新しいコマンドと機能強化が追加されました。
- 外側のブロック (Ctrl + Alt + UpArrow) に移動すると、外側のコード ブロックの先頭にすばやく移動できます。
- 次へ/前の問題 (Alt + PgUp/PgDn) に移動すると、次/前の問題 (エラー、波線、電球) にスキップできます。
- [メンバーに移動] (Ctrl + T、M) のスコープが既定でファイルに設定されるようになりました。 スコープを現在のドキュメントに切り替えることで、既定値をソリューションに戻すことができます (Ctrl + Alt + C)。
- 複数のキャレットをサポートするファイル内の複数の任意の場所に挿入ポイントと選択範囲を作成できるようになりました。 これにより、複数の場所のテキストを同時に追加、編集、または削除できます。
- Ctrl + Alt + LeftMouseClick でキャレットを挿入します。
- Shift + Alt + Ins を使用して、現在の選択範囲と一致する次の位置に選択範囲とキャレットを追加します。
- アクションの完全な一覧については、「 複数のキャレット > 編集」 を参照してください。
- Alt + 'を使用してコンテキスト ナビゲーション メニューにアクセスします。
- 2 つの新しいキーボード プロファイル ( Visual Studio Code と ReSharper (Visual Studio)) とキーバインドの整合性を保ちます。 これらのスキームは、[ ツール] > [オプション] > [環境] > キーボード と上部のドロップダウン メニューにあります。
デバッグ
このリリースには、次のデバッグ拡張機能が含まれています。
Visual Studio 2017 の複数のインスタンスがインストールされている場合、デバッグ時に拡張機能をデプロイするインスタンスを選択できるようになりました (図 5)。 この方法では、たとえば、プレビュー チャネルでのデバッグ中に Visual Studio リリース チャネルで開発できます。
(図 5)デバッグ インスタンスの選択 スナップショット デバッガーを発行の概要ページから直接アタッチできるようになりました (図 6)。
(図 6)発行の概要からスナップショット デバッガーをアタッチする ヒープを使用したミニダンプのデバッグ中に、[タスク] ウィンドウでマネージド タスクを表示できるようになりました。
ユニバーサル Windows プラットフォーム開発者向けのツール
ターゲット プラットフォーム バージョンの Windows 10 Fall Creators Update (ビルド 16299) 以降を使用してユニバーサル Windows プラットフォームを対象とするプロジェクトに対して、XAML デザイナーに多くの重要な機能強化を行いました。 これらの機能強化は次のとおりです。
- プロパティ インスペクターでコレクションを編集できるようになりました。
- デザイナーで、テンプレートとスタイルを編集できるようになりました。これには、それらのエンティティの定義が他のドキュメントで定義されている場合も含まれます。
- IconElement 型のプロパティ (AppBarButton のアイコンなど) に、プロパティ インスペクターにカスタム エディターが追加され、これらのプロパティを簡単に設定できるようになりました。
- デザイナー、エディター、エディット コンティニュはすべて x:DefaultBindMode で正常に動作するはずです。
- Blend の Visual State Manager エクスペリエンスで AdaptiveTrigger がサポートされるようになりました。
F# 4.5 および F# Tools for Visual Studio
このリリースでは、F# 言語バージョン 4.5 が導入されました。 これは、FSharp.Core (F# コア ライブラリ) の新しい 4.5.x ファミリにも対応しています。 これらの各変更の仕様は 、F# RFC リポジトリで読み取ることができます。 このリリースでは、Visual Studio 用の F# ツールにも多くの機能強化があります。
F# 4.5
F# 言語バージョン 4.5 のハイライトの一部を次に示します。
Span<'T> サポート
F# でSpan<'T>、Span、Memoryのようなコンストラクトを使用して API を効果的に使用および生成できるように、refと関連する機能を実装しました。 この機能は次のとおりです。
- 新しい
voidptr型。 - FSharp.Core の新しい
NativePtr.ofVoidPtrおよびNativePtr.toVoidPtr関数。 - 新しい型
inref<'T>とoutref<'T>。それぞれ読み取り専用の byref と書き込み専用の byref です。 これは、C# のin refとout refに対応します。 -
ByRefLike構造体 (SpanやReadOnlySpanなど) を生成する機能。 -
IsReadOnly構造体を生成する機能。 - メソッドからの
byrefおよびinref戻りの暗黙的な逆参照。 -
byref/inref/outrefで拡張メンバーを生成する機能。
この機能セットは、F# 4.1 の byref戻り値の初期設計のバグを修正します。ここで、 byrefを返す関数、メソッド、およびプロパティは、戻り値を暗黙的に逆参照していません。 この変更を行って、C# が ref 戻り値を処理する方法に沿った機能を提供します。 エラー メッセージは、 ref- 戻り値の暗黙的な逆参照が使用されたことを型注釈が示す場合に使用されます。
さらに、この機能セットでは、"Evil struct replacement" が可能な F# コンパイラのバグも修正されます。つまり、F# 構造体でメソッドを呼び出すと、呼び出された実際の構造体を別の構造体に置き換えることができます。 構造体の this パラメーターは inref<MyStruct>と見なされるようになりました。構造体を変更する場合は、変更可能なフィールドを追加することを示すエラーが表示されます。
この機能セットの span では、refとに似たコンストラクトの詳細を確認できます。
マッチ! コンピュテーション式
F# 4.5 では、match! によって完全に提供された、コンピュテーション式内で使用するための新しいキーワードであるが導入されています。 この構文糖は、結果のlet!が続くmatchに相当します。 詳細については、 RFC for match!を参照してください。
シーケンス式、リスト式、配列式で yield を使用してアップキャストする必要性を緩和する
F# 4.5 では、サブタイプをスーパータイプに変換するために yield を使用するときにアップキャストが必要な場合がいくつか緩和されるようになりました。
を使用yield場合、F# 3.1 以降、これらの式にこの制限は必要ないため、既存の動作との一貫性が高くなります。 詳細については、この機能の RFC を参照してください。
リストと配列の角かっこのインデントを許可する
F# 4.5 では、リストと配列の角かっこのインデント規則が緩和され、独自の行で 1 つのスコープを前方にインデントする必要がありました。 この以前の要件は、特に F# の初心者にとって、常に非常に混乱しています。 さらに、F# シーケンス式では必要ありません。 これにより、配列式とリスト式がシーケンス式と同じ一貫性のある状態になります。 詳細については、この機能の RFC を参照してください。
パブリックとして出力される列挙型のケース
F# 4.5 では、C# が列挙ケースを出力する方法に合わせて、すべての状況で列挙ケースがパブリックとして出力されるようになりました。 これにより、プロファイル ツールで、ラベル名ではなく値が出力された F# コードのログを分析しやすくなります。 詳細については、この機能の RFC を参照してください。
F# コンパイラの機能強化
F# 4.5 では、前述の言語機能に加えて、F# コンパイラの機能強化が行われました。 これらには次のものが含まれます。
- F# コンパイラのすべての割り当ての最大 2.2% を (さまざまなシナリオで) 削除することで、コンパイラのパフォーマンス作業を改善しました。
- 構造体ベースの列挙体で
AccessViolatioNExceptionを使用するとyield!になるバグを修正しました。 -
FSharpFuncから再度継承できるようになりました。 - .NET Core 用 F# のデバッグ ビルドでは、末尾呼び出しは既定で無効になっています。 リリースが有効になっているため、デスクトップの F# コンパイラと一致します。
- F# 参照正規化は、出力ファイルに書き込まれる推移的なアセンブリ参照を制御できるように修正されました。 これにより、.NET Core で同等のアセンブリ リダイレクトを実行できます。
- インライン関数で動的呼び出しを使用しようとしたときに使用されるエラー メッセージが無視されるバグを修正しました。 エラー メッセージが伝達されるようになりました。
- F# では、プロジェクト ファイルで設定できる
WarningsNotAsErrorsフラグが考慮されるようになりました。 - パターン マッチの分岐が同じエラー メッセージの種類の条件を返さない場合、 Isaac Abraham によってよりわかりやすいものに更新されました。
- オーバーロードされたメソッドの実装がないコンパイル インターフェイスの実装が Steffen Forkmann によって修正された場合の内部エラーバグ。
- コンパイラの字句作成フェーズで不要な配列のコピーが 、Gauthier Segay によって削除されました。
- F# 列挙体での不完全なパターンの一致により、 John Wostenberg によって提供された、カバーされていないケースの例を示す詳細な警告が生成されるようになりました。
- #nowarn「2003」が尊重され、 マティアス・ディトリッチが貢献しました。
- F# オーバーロードの解決で C# 拡張機能メソッドを使用できない可能性があるバグが 、Steffen Forkmann によって修正されました。
- 内部 QueueList データ構造のバグが Steffen Forkmann によって修正されました。
- Steffen Forkmann、Eugene Auduchinok、ncave によって、さまざまな小規模な最適化とコード クリーンアップの取り組みが行われました。
F# Core ライブラリ 4.5.x
F# Core ライブラリに次の追加機能が追加されました。
-
async { }計算式のスタック トレースを改善するために、重要な作業が行われました。 スタック トレースでユーザー コードとユーザー行番号を確認できるようになりました。 詳細については、この機能の RFC を参照してください。 -
FuncConvert.FromFuncC# との相互運用に役立つ、FuncConvert.FromActionオーバーロードとSystem.Funcオーバーロードを入力する API をSystem.Actionします。 詳細については、この機能の RFC を参照してください。 -
ValueOptionは新しい種類であり、最終的にアクティブ パターンのパフォーマンス向上を目的とした一連の将来の機能の最初の機能です。 詳細については、この機能の RFC を参照してください。 -
TryGetValueが F# Map 型の新しいメンバーになりました。 詳細については、この機能の RFC を参照してください。 -
MailboxProcessor.TryReceiveの最初の呼び出し時に高い CPU 使用率を修正しました。 -
boolの比較では、ヴァシリー・キリチェンコが提供する高速な一般的な比較が使用されるようになりました。 -
Array.allPairsの概要テキストが正しく更新され、Patrick McDonald が投稿しました
F# ツールの改善
このリリースには、パフォーマンスの強化やエディターの新機能など、F# ツールの大幅な機能強化が含まれています。 これまでと同様に、F# オープン ソース コミュニティから多数の投稿を受けています。 ハイライトは次のとおりです。
- マルチターゲットを使用するものも含め、すべてのフォームの .NET SDK スタイルプロジェクトの IntelliSense パフォーマンスが向上しました。
- 非常に大きなファイルに対する IntelliSense のパフォーマンスを分析および改善するためのコミュニティ主導の取り組みは、 Vasily Kirichenko、 Steffen Forkmann、 Gauthier Segay によって提供されました。 非常に大きなファイル (10,000 行以上のコード行) の IntelliSense は、現在約 2 倍の速度です。
- (パッケージがインストールされているにもかかわらず) 古い FSharp.Core に対する警告は、.NET SDK スタイルのプロジェクトには存在しなくなりました。
- IntelliSense で
.した後にメンバーの XML ドキュメントを表示する説明ツールヒントは、10 秒後にタイムアウトしなくなりました。 - オブジェクト コンストラクターの引数にブレークポイントを設定できないバグが修正されました。
- 名前が変更されたシンボルがジェネリック パラメーターの場合に重複するバグが修正されました。
- .NET Framework (従来の F# テンプレート) のテンプレートでは、.NET SDK F# テンプレートに合わせて、NuGet パッケージから FSharp.Core が使用されるようになりました。
-
()、[]、{}、[||]、および[<>]中かっこのペアで、トランザクション ブレースの自動補完を使用できるようになりました。 この作業は 、ジブラン・ローザと共同で行いました。 - これで、Ctrl キーを押しながら F# 記号をクリックして定義に移動できるようになりました。 このジェスチャの設定は、[ ツール] > [オプション] ウィンドウにも適用されます。
- IntelliSense パフォーマンス UI が変更され、さまざまな IDE 機能の古い型チェック情報を構成できるようになりました。 各オプションの説明が、設定のヒントに表示されるようになりました。
- 中かっこの一致の強調表示で、 Vasily Kirichenko とのコラボレーションで完了した中かっこが正しく強調表示されるようになりました。
- Vasily Kirichenko が提供する型が再帰的に定義されている場合、定義に移動すると正しく移動するようになりました。
- ファイルの先頭が空のときに自動インポートされた名前空間が開かなかったバグが 、Vasily Kirichenko によって修正されました。
- ドットを含む
printf指定子の色が間違っていたバグが 、Vasily Kirichenko によって修正されました。 - すべてのオープンが再帰モジュール内で未使用と見なされていたバグは、 Vasily Kirichenko によって修正されました。
- 未使用の Opens アナライザーのパフォーマンスは 、Vasily Kirichenko によって大幅に改善されました。
- 属性のオートコンプリートは、 Vasily Kirichenko が提供する実際の属性であるオプションのみを提案するようになりました。
- Vasily Kirichenko が提供するコンストラクター呼び出しサイトで、型プロバイダーの静的パラメーターに対してシグネチャ ヘルプヒントが生成されるようになりました。
- 測定単位として使用される値型が参照型として色付けされていたバグは 、Vasily Kirichenko によって修正されました。
- 一部のファイルでスクロール中にセマンティックカラー化が消える可能性があるバグが 、Vasily Kirichenko によって修正されました。
- 現在、 ビクター・ピーター・ルーヴェン・ミュラーが提供する実験的な CodeLens 実装があります。 F# > Code Lens の [オプション] >テキスト エディター>でオンにすることができます。
- F# コンパイラ サービスが XML ドキュメントのモジュール名を誤って引き出すバグが 、セバスチャン アーバンによって修正されました。
-
Dictionaryとそれに続くContainsKey呼び出しでItemを使用するコードは、TryGetValueを使用するように、Eugene Auduchinok によって変更されました。 - Jakob Majoka は、ツールヒント用に別の API を使用するプロセスにも貢献しました。
インフラストラクチャ、パッケージ化、オープン ソースの機能強化
インフラストラクチャ、パッケージ化、オープン ソースのコントリビューション エクスペリエンスに対して、次の機能強化を行いました。
- Visual Studio で配布される F# コンパイラは、F# コンパイラ SDK の場所にシングルトンとしてインストールされなくなりました。 Visual Studio と完全に並べて表示されるようになりました。つまり、Visual Studio のサイド バイ サイド インストールでは、最終的に完全にサイド バイ サイドの F# ツールと言語エクスペリエンスが提供されます。
- FSharp.Core NuGet パッケージが署名されました。
- ETW ログが F# ツールとコンパイラに追加されました。
- FSharp.Core の非常に大きな
control.fs/control.fsiファイルは、async.fs/async.fsi、event.fs/event.fsi、eventmodule.fs/eventmodule.fsi、mailbox.fs/mailbox.fsi、およびobservable.fs/observable.fsiに分割されています。 - プロジェクト パフォーマンス ストレス テスト成果物の .NET SDK スタイルのバージョンを追加しました。
- コードベースから Newtonsoft.json が削除され、OSS 共同作成者用にダウンロードされるパッケージが 1 つ少なくなりました。
- System.Collections.Immutable と System.Reflection.Metadata の最新バージョンを使用するようになりました。
C++ 準拠とツールセットの機能強化
このリリースには、次の C++ 準拠とツールセットの機能強化が含まれています。
- /experimental:プリプロセッサ スイッチで有効になっている、C++11 標準 (C99 プリプロセッサ機能を含む) に準拠した 、試験段階のトークン ベースの新しい プリプロセッサ。 これはマクロ
_MSVC_TRADITIONALで制御されます。これは、従来のプリプロセッサを使用する場合は 1、新しい試験標準準拠プリプロセッサを使用する場合は 0 と定義されます。 - Visual Studio 開発者コマンド プロンプトでは、Visual C++ Spectre バリアント 1 の軽減ランタイム (
-vcvars_spectre_libs = spectre) の有効化がサポートされています。 Spectre の軽減策の詳細については 、Visual C++ チーム ブログを参照してください。 - SSA オプティマイザーに 2 つの新しい追加機能が追加され、最新の C++ コード生成に重点が置かれました。冗長ストアの削除と冗長ブランチの折りたたみ。
- リンク時間を短縮するために、リンカーでメモリ マップされた I/O パフォーマンスを最適化しました。
C++ クロスプラットフォーム開発
このリリースでは、C++ クロスプラットフォーム開発に以下を追加、改善、および追加しました。
- Tools>Options で ClangFormat に指定されたコーディング規則に従って、.clang-format ファイルを生成するための Add>New Item テンプレートを追加しました。 Visual Studio の規則が選択されている場合、生成されたファイルは、[ ツール] > オプションからユーザーの現在の Visual Studio 書式設定の構成と一致しようとします。
- 出荷された clang-format.exe バージョンを 6.0.0 に更新しました。
- CppProperties.jsonに構成を簡単に追加するためのテンプレート。
- CMakeSettings.jsonへの構成の追加を簡略化するテンプレートを追加しました (図 7)。
C++ の生産性
C++ の生産性に対して、次の機能強化と改善を行いました。
- マクロの C++ クイック ヒントでは 、定義だけでなく、展開先が表示されるようになりました。 これは、マクロ識別子がプリプロセッサによって置き換えられる内容を明確にしているため、他のマクロを参照する複雑なマクロに特に役立ちます。
- コードを最新化するための新しいツールとして、基本的な マクロを constexpr に 変換する新しいクイック修正電球を追加しました。
- テンプレートの IntelliSense では、テンプレート本体内で IntelliSense を最大限に活用するためのテンプレート引数の詳細が提供されます (図 8)。
- コード分析エクスペリエンスの更新に取り組んでいます。 Tools>Options>Text Editor>C++>Experimental>Code Analysis で、進行中の新機能を有効にできるようになりました。 ファイルを開いたり保存したりすると、バックグラウンドでコード分析を実行でき、結果がエラー一覧に表示され、エディターに緑色の波線として表示されます (図 9)。
C++ デバッグの機能強化
次のデバッグの機能強化が行われました。
- マイ コードのみ により、呼び出し履歴ウィンドウでこれらの呼び出しを折りたたむだけでなく、システムまたはサード パーティの C++ ライブラリからコードをステップオーバーできるようになりました。 コードが /JMC でコンパイルされ、非ユーザー ライブラリ パスが .natjmc ファイルで指定されている場合は、任意の C++ ライブラリに対してこの動作を制御できます。 システム ライブラリがユーザー コードを呼び出す場合、ステップ インすると、デバッガーはすべてのシステム コードをスキップし、ユーザー コード コールバックの最初の行で停止します (図 10)。
- データ ブレークポイント を Watch、Quickwatch、Autos、Locals ウィンドウ内で設定できるようになりました。これにより、メモリに格納されている値が数回の短いクリックで変更されたときに中断できます。
- ソース リンクを使用すると、コンパイル時に実行可能ファイルまたはライブラリの元のソース コードに関する情報を PDB に埋め込むことができます。
- デバッグ時に、プログラムが実行を終了したとき (デバッガーを使用せずにプログラムを実行する場合と同様) に、コンソール ウィンドウが既定で開いたままになりました。 この動作を切り替えて、[ ツール] > [オプション] > [デバッグ] > [全般] でコンソールを自動的に閉じることもできます。
JavaScript と TypeScript の機能強化
TypeScript 3.0
Visual Studio 2017 バージョン 15.8 には、既定で TypeScript 3.0 が含まれるようになりました。 このリリースの詳細については、 TypeScript 3.0 リリースのお知らせを参照してください。
Vue.js サポートの強化
Vue.js ライブラリのサポートが改善され、特に .vue ファイル ("単一ファイル コンポーネント" とも呼ばれます) のサポートが強化されました。 これにより、.vue ファイル内のスクリプト ブロックを編集するときの機能強化が提供されます。これには、スクリプト要素の lang="ts" 属性を使用して TypeScript で作成されたスクリプト ブロックのサポートが含まれます。 (注: 実行時に必要な HTML ファイルと JS ファイルに .vue ファイルを変換するには、WebPack などを使用したビルド プロセスを使用する必要があります。詳細については、「 単一ファイル コンポーネント」ページ を参照してください)。
Node.js ワークロードがインストールされている場合、[新しいプロジェクト] ダイアログの [JavaScript/ Node.js] または [TypeScript/ Node.js] パスの下に "Basic Vue.js Web アプリケーション" テンプレートが表示されるようになります。 次に、.vue ファイル内のスクリプト ブロック内で TypeScript コードを編集する例を示します (図 11)。
ESLint の機能強化
このリリースでは、ESLint のサポートが再実装されました。 ESLint には、次の機能強化と機能強化があります。
- Visual Studio では、保存されたファイルを lint するだけではなく、編集時にも JavaScript ファイルが lint されるようになりました。
- 開いているファイルだけでなく、プロジェクト内のすべての JS ファイルに対して結果を報告できます。linted しないプロジェクトの部分がある場合は、.eslintignore ファイルを使用して、無視する必要があるディレクトリとファイルを指定できるようになりました。
- ESLint は既定で ESLint 4 を使用するように更新されましたが、プロジェクトに ESLint のローカル インストールがある場合は、代わりにそのバージョンが使用されます。
Visual Studio で ESLint をグローバルに無効にするには、[ツール] [オプション] > [テキスト エディター] > Javascript/Typescript > Linting** の [>] 設定をオフにします (図 12)。
Node.js のフォルダーを開く機能の機能強化
"Node.js ワークロード" がインストールされている場合のフォルダーを開くシナリオでは、JavaScript と TypeScript を使用する多くの機能強化が行われます。 たとえば、NPM パッケージの管理、TypeScript の構築、Node.exeを使用した起動とデバッグ、NPM スクリプトの実行、単体テストの実行などです。
詳細については、「 ソリューションまたはプロジェクトを使用せずに Visual Studio で JavaScript と TypeScript コードを開発する」を 参照してください。
エディターのパフォーマンスの向上
以前のリリースでは、すべての JavaScript および TypeScript 言語サービス操作が 1 つの Node.js プロセスによって処理されていました。 これにより、長い可能性のある操作 (エラーのコードの分析など) が既に進行中である間に、ユーザー入力に影響を与えるコマンド (改行後の自動書式設定など) が送信された場合、エディターの遅延が発生する可能性があります。 これを軽減するために、編集に最も影響を与える操作に別のプロセスが使用されるようになりました。 このプロセスは、既存の言語サービス プロセスよりもシステム リソースの方が大幅に軽くなります。 ただし、新しいプロセスを無効にする場合は、[の [>] チェック ボックスをオンにします。
Visual Studio Web ツール
ライブラリ マネージャーは、Visual Studio 2017 に含まれる新機能です。 Web プロジェクトでクライアント側ライブラリを管理するのに役立ちます。
コンテナー ツール
ASP.NET Core Web プロジェクト用の新しい単一プロジェクト Docker コンテナー エクスペリエンスを追加しました。 これにより、既存の Docker Compose ベースのコンテナー ツールが補完され、Visual Studio から Docker コンテナーを簡単に作成、デバッグ、ビルドできます。
プロジェクトの作成時に Docker サポートを追加できます (図 13):
または、ソリューション エクスプローラーでプロジェクトのコンテキスト メニューを使用して、既存のプロジェクトに対する Docker サポートを有効にすることができます (図 14)。 これを行うと、Visual Studio によってプロジェクトに 1 つの Dockerfile が作成されます。 Windows または Linux を選択するオプションがあります。
Visual Studio では、コンテナー内で実行中にプロジェクトをデバッグできるように、Docker 用のデバッガー起動プロファイル (図 15) も追加されます。
複数の Docker プロジェクトを含むソリューションがある場合、既定では、ソリューションを開始するときに実行されるコンテナーは 1 つだけです。 複数のコンテナーを同時に実行する場合は、ソリューション エクスプローラーでソリューションを右クリックし、[ スタートアップ プロジェクトの設定 ] と [ 複数のスタートアップ プロジェクト] の順に選択し、実行するすべてのプロジェクトをデバッグせずに [ アクション ] ドロップダウンを [開始 ] または [開始 ] に設定できます。
コンテナー化されたプロジェクトを目的の方法で実行したら、プロジェクトを右クリックし、[ Docker イメージのビルド ] を選択して、Azure Container Registry または DockerHub にプッシュする準備ができたら、ローカルにイメージをビルドできます。
新しい Container Orchestrator サポート オプションを使用して、既存の Docker Compose ベースの機能を ASP.NET Core Web プロジェクトに追加することもできます (図 16)。 ソリューション エクスプローラーで ASP.NET Core Web プロジェクトを右クリックし、 コンテナー オーケストレーター サポート > 追加を選択し、ドロップダウン メニューから Docker Compose を選択します。
発行の機能強化
このリリースには、次の発行の機能強化が含まれています。
- Docker コンテナーをコンテナー レジストリに発行するときに、イメージのタグをカスタマイズできるようになりました。 タグを手動で追加するか (既定値は "latest")、自動生成されたタグを使用して各タグが一意であることを確認できます。
- 新しい Azure App Service を作成するときに、テレメトリを自動的に収集するように Application Insights を構成することもできます。 Application Insights も含むリージョンを選択すると、既定で有効になります。 Application Insights がまだ含まれていないリージョンを選択した場合は、ドロップダウンから Application Insights リソースに別のリージョンを手動で指定できます。
- Azure Functions プロジェクトを発行するときは、新しい Run-From-Zip 機能を使用して発行することを選択できます。
Visual Studio Tools for Xamarin
このリリースには、Xamarin の次の更新プログラムが含まれています。
- Xcode 9.4 のサポートが追加されました。
- 新しい Xamarin.Forms プロジェクトを作成すると、既定のコード共有オプションが .NET Standard になりました。 共有プロジェクト オプションは引き続き使用できます。
- Android の増分ビルドの機能強化が追加されました。 Xamarin.Android では、中間出力ディレクトリで生成されたファイルを使用して、完全ビルドよりも高速な増分ビルドを実現します。 以前は、プロジェクトのターゲット フレームワークを変更した場合、ファイルが無効になり、次の実行時に完全なビルドが実行されます。 このリリースでは、異なるターゲット フレームワークを切り替え、増分ビルドの恩恵を受けることができるように、フレームワーク単位のフォルダーにファイルを保持するようになりました。 プロジェクトをクリーニングすると、保存されたファイルで使用されるディスク領域を再利用できます。
- Visual Studio 2017 で Xamarin.Mac バインド プロジェクトの最小サポートが追加されました。 これにより、Visual Studio で Xamarin.Mac バインド プロジェクトを読み込み、サポートされているものとして認識できるようになります。 Xamarin.Mac バインド プロジェクトをビルドすることもできます。 ただし、ビルド プロセスはネイティブ Mac ツール チェーンを使用せずにローカルで実行されるため、生成された IL アセンブリをアプリでの実行やデバッグに使用することはできません。
Hyper-V Android Emulator のサポート
このリリースでは、Windows 10 April 2018 Update (図 17) で実行するときに Hyper-V と互換性のある Google Android エミュレーターのサポートが追加されました。 これにより、Google の Android エミュレーターを、Hyper-V 仮想マシン、Docker ツール、HoloLens エミュレーターなど、他の Hyper-V ベースのテクノロジと並べて使用できます。 Hyper-V を使用するモバイル アプリ開発者は、常に最新の Android API をサポートし、すぐに使用できる Google Play Services で動作し、カメラ、位置情報、クイック ブートなど、Android エミュレーターのすべての機能をサポートする高速 Android エミュレーターにアクセスできるようになりました。
Xamarin.Android デザイナー
Xamarin.Android の デザイナー エクスペリエンスが大幅に改善 されました。 ハイライトは次のとおりです。
- 分割ビュー エディターが導入され、レイアウトを同時に作成、編集、プレビューできます (図 18)。
- カスタム コントロールの IntelliSense エクスペリエンスと信頼性が向上しました。
- システム指定値のサンプル データサポート。
Xamarin.Forms プレビュー ツール
Xamarin.Forms Previewer では、Xamarin.Forms バージョン 3.1.0.583944 以降を使用する場合にツールボックスがサポートされるようになりました。 Xamarin.Forms コントロールはツールボックスに表示されるため、ツールキットを初めて使用するユーザーがより見つけやすくなります。 XAML コード エディターにコントロールをドラッグ アンド ドロップして、ページにコントロールを追加することもできます。 Xamarin.Forms Previewer が XAML エディターの一部になりました。 エディター ウィンドウの端にある展開アイコンを使用して、開いたり閉じたりすることができます。
Python
このリリースでは、Python 開発者向けに次の機能強化が追加されました。
- Python IntelliSense では 、型指定された定義 を使用して、スタティック分析では自動補完を推論できないライブラリに対して、より豊富な結果が提供されるようになりました。
- 15.7 プレビュー リリースで最初に発表された実験用デバッガーは、Python に使用される既定のデバッグ エンジンとなり、Python コードのデバッグをより高速かつ信頼性の高いものにしています。
- デバッグアタッチ、プロファイリング、混合モード (クロス言語) デバッグ機能を有効にする修正プログラムなど、Python 3.7 のサポートが追加されました。
- 上記の機能の詳細については、 Visual Studio 2017 バージョン 15.8 のブログ記事で Python を確認してください。
ローカル Azure 関数の設定を移行する
発行の概要ページで使用できる [マネージド アプリケーションの設定] ダイアログに、local.settings.json ファイルの値が表示され、Azure でホストされているリモート Azure 関数アプリに値を移行できるようになりました。
接続済みサービス
Azure 関数プロジェクトを使用するソリューション用に Visual Studio 2017 から直接 Azure 関数の継続的デリバリーを構成できるようになりました。
テスト エクスプローラーの機能強化
階層ビューのグループの 1 つが選択されている場合、テスト エクスプローラーに、より有益なテスト状態の概要ペイン (テスト エクスプローラーの下のウィンドウ) が表示されるようになりました。 ペインには、そのグループ化で失敗したテスト、成功したテスト、または実行されなかったテストの数が表示されるようになりました。
新しい機能拡張
言語サーバー プロトコル
Visual Studio で言語サーバー プロトコルがネイティブにサポートされるようになりました。 拡張機能の作成者は、既存の言語サーバーと通信する 拡張機能を作成 して、Visual Studio に言語サポートを追加できます。 拡張機能ユーザーは、これらの拡張機能をインストールして、 Rust などの Visual Studio 内でお気に入りの言語の使用を開始できます。
AsyncPackage テンプレート
拡張機能の作成者は、アイテム テンプレートを使用して AsyncPackage を作成し、拡張機能のパフォーマンスを最適化できるようになりました。 AsyncPackage の詳細については、こちらをご覧ください。
拡張機能パック
拡張機能パックを使用して、お気に入りの拡張機能セットを簡単に共有したり、すべての拡張機能と Visual Studio の新しいインストールを設定 したりできます。 拡張機能パックを使用すると、拡張機能の一覧を作成し、拡張機能にパッケージ化し、すばやく使用してそれらの拡張機能を一括インストールできます。
コマンド ライン拡張機能の発行
コマンド ラインを使用して Visual Studio Marketplace に拡張機能を発行します。
.NET Core SDK 2.1.400
Visual Studio 2017 バージョン 15.8 には、.NET Core SDK 2.1.400 が含まれています。 新しい SDK の機能は次のとおりです。
- NUnit テンプレートを追加しました
- 署名されたグローバル ツールのサポートを追加しました
- わかりやすくするためにヘルプ テキストを改善しました
.NET Core CLI で 32 件の問題が終了しました。
.NET Core SDK で 20 件の問題が終了しました。
ソース管理
.NET Core プロジェクトの場合、エクスプローラーを使用してプロジェクトに直接追加されたファイルでは、ソリューションを再読み込みしなくても、ソリューション エクスプローラーに正しい Git および TFS 追跡アイコンが表示されるようになりました。
.NET テスト アダプター拡張機能
.NET テスト アダプターには、次の破壊的変更と非推奨があります。
- 破壊的変更: すべてのテスト プロジェクトは、csproj に .NET テスト アダプター NuGet 参照を含める必要があります。 そうでない場合、ビルド後にテスト アダプター拡張機能による検出が開始された場合、またはユーザーが選択したテストを実行しようとした場合、このテスト出力がプロジェクトに表示されます。
- テスト プロジェクト {<テスト プロジェクトの完全なパス>} は、.NET NuGet アダプターを参照しません。 このプロジェクトでは、テストの検出または実行が機能しない可能性があります。 ソリューション内の各テスト プロジェクトで NuGet テスト アダプターを参照することをお勧めします。
- .NET テスト フレームワークでは、NuGet パッケージでアダプターがリリースされ、Visual Studio 拡張機能から離れています。 拡張機能を通じて提供される .NET テスト アダプターのサポートは非推奨ですが、引き続きサポートされています。 つまり、[ ツール] > [オプション] > テストで 2 つの新しいオプションを使用できます。
- 最初のオプションを使用すると、Visual Studio では、テスト アセンブリ フォルダー (テスト アダプター NuGet 参照によって設定) または runsettings ファイルで指定されているテスト アダプターのみを使用できます。
- 2 番目のオプションを使用すると、Visual Studio は以前の動作に "フォールバック" し、テスト アダプターの NuGet 参照がないプロジェクトのテスト アダプター拡張機能を検索できます。 どちらのオプションも既定でオンになっているため、このリリースでは既定の動作は変更されません。
- 注: Non-.NET テスト アダプターは、この変更の影響を受けません。
.NET Framework シークレットのサポートの ASP.NET
ASP.NET、.NET Framework 4.7.1 以降を対象とする .NET Framework プロジェクトでは、プロジェクトを右クリックして [マネージド ユーザー シークレット] を選択することで、ソース コードで不要なシークレットを usersecrets.xml で開いて格納できるようになりました。
.NET Framework のパフォーマンス ASP.NET 向上
参照されている .NET コンパイラ パッケージが ASP.NET .NET Framework プロジェクトで古い場合、 ビルド パフォーマンスを向上させるためにプロジェクトを開くときにパッケージをアップグレードするように求められます。
.NET Framework 4.7.2
Visual Studio 2017 バージョン 15.8 では、4.7.2 ランタイムが含まれるサポートされているすべてのプラットフォームに .NET Framework 4.7.2 開発ツールが提供されるようになりました。 .NET Framework 4.7.2 には、いくつかの新機能と機能強化のほか、信頼性、安定性、セキュリティ、パフォーマンスに関する多数の修正プログラムが用意されています。
.NET Framework 4.7.2 の詳細については、次の記事を参照してください。
- .NET Framework 4.7.2 RTM ブログ
- .NET Framework 4.7.2 リリース ノート
- .NET Framework 4.7.2 の既知の問題
- .NET Framework 4.7.2 でのアプリケーションの互換性
- API の変更
パッケージの読み込みの遅延
Visual Studio IDE が完全に開始され、ソリューションが読み込まれるまで、自動読み込みするように構成された非同期パッケージの読み込みが Visual Studio によって遅延されるようになりました。 この変更は、同期的に自動読み込まれたパッケージには影響しません。 ユーザーは、ステータス バーの左下隅にあるタスク ステータス センターを見て、進行状況を監視できます。 非同期パッケージを作成する拡張機能の作成者は、拡張機能をテストする必要があります。 詳細については、「 拡張機能の自動読み込み動作を更新して重要なシナリオの応答性を向上させる」を参照してください。
---
Visual Studio 2017 バージョン 15.8 セキュリティ アドバイザリに関する通知
Visual Studio 2017 バージョン 15.8.7 サービス リリース- 2018 年 10 月 10 日リリース
CVE-2018-8292 .NET Core の情報漏えいの脆弱性
HTTP リダイレクトが発生した送信要求で HTTP 認証情報が誤って公開された場合、.NET Core にセキュリティ機能バイパスの脆弱性が存在します。 攻撃者がこの脆弱性を悪用した場合、この情報を使用して Web アプリケーションをさらに侵害する可能性があります。 このセキュリティ更新プログラムは、.NET Core アプリケーションが HTTP リダイレクトを処理する方法を修正することで、この脆弱性を解決します。
Visual Studio 2017 バージョン 15.8.4 サービス リリース- 2018 年 9 月 11 日にリリース
CVE-2018-8409 .NET Core のサービス拒否の脆弱性
System.IO.Pipelines が要求を正しく処理しない場合、.NET Core 2.1 にサービス拒否の脆弱性が存在します。 攻撃者がこの脆弱性を悪用した場合、System.IO.Pipelines を利用しているアプリケーションに対してサービス拒否が発生する可能性があります。 この脆弱性は、認証なしでリモートで悪用される可能性があります。 認証されていないリモートの攻撃者は、特別に細工された要求をアプリケーションに提供することにより、この脆弱性を悪用する可能性があります。
CVE-2018-8409 ASP.NET のコア サービス拒否の脆弱性
ASP.NET Core 2.1 には、Web 要求を不適切に処理するサービス拒否の脆弱性が存在します。 攻撃者がこの脆弱性を悪用すると、ASP.NET Core Web アプリケーションに対してサービス拒否が発生する可能性があります。 この脆弱性は、認証なしでリモートで悪用される可能性があります。 認証されていないリモートの攻撃者は、ASP.NET Core アプリケーションに特別に細工された Web 要求を提供することにより、この脆弱性を悪用する可能性があります。
Visual Studio 2017 バージョン 15.8- 2018 年 8 月 14 日にリリース
CVE-2018-0952 Diagnostic Hub Standard Collector の特権の昇格の脆弱性
Visual Studio サービスに特権の昇格の脆弱性が存在し、ファイルの書き込み時に管理者以外のユーザーによるシステム特権が発生する可能性があります。 これを利用した攻撃者は、ユーザー レベルのアクセス権のみを持ちながら、ファイルをシステムとして書き込む可能性があります。 このセキュリティ更新プログラムは、現在のユーザーを偽装してファイルの場所へのアクセスを検証することで、この問題に対処します。
Visual Studio 2017 バージョン 15.8 Preview 4 -- 2018 年 7 月 10 日にリリース
CVE-2018-8172 Visual Studio のリモート コード実行の脆弱性
特別に作成されたプロジェクト、またはリソース ファイルを開くことで、ユーザーのコンピューターの悪用につながる可能性のある、リモート コード実行の脆弱性。 このセキュリティ更新プログラムは、Visual Studio でのファイルのソース マークアップの確認方法を修正することで、脆弱性に対処します。
CVE-2018-8260 .NET Framework のリモート コード実行の脆弱性
.NET ソフトウェアにリモートでコードが実行される脆弱性が存在し、攻撃者が現在のユーザーのコンテキストで任意のコードを実行できるようにすることで、ユーザーのコンピューターが悪用される可能性があります。 このセキュリティ更新プログラムは、.NET でのファイルのソース マークアップの確認方法を修正することで、脆弱性に対処します。
CVE-2018-8232 .NET Microsoft Macro Assembler の改ざんの脆弱性
Microsoft Macro Assembler で正しくコードが検証されないことに関する改ざんの脆弱性 このセキュリティ更新プログラムは、確実に Microsoft Macro Assembler でコード ロジックが正しく検証されるようにすることで、脆弱性に対処します。
CVE-2018-8171 ASP.NET Core のセキュリティ機能バイパスの脆弱性
ASP.NET Core にはセキュリティ機能バイパスの脆弱性が存在します。不適切なログイン試行の回数が検証されず、攻撃者による無限の認証試行につながる可能性があります。 この更新プログラムは、不適切なログイン試行の回数を検証することで、脆弱性に対処します。
Visual Studio 2017 バージョン 15.8 Preview 3 -- 2018 年 6 月 26 日にリリース
CVE-2018-11235 Git のセキュリティの脆弱性に関するマイクロソフト セキュリティ アドバイザリ
Git コミュニティで明らかになった Git のセキュリティ上の脆弱性を修正しました。 この脆弱性は、ユーザーが悪意のあるリポジトリを複製した場合に、任意のコード実行を引き起こす可能性がありました。
Visual Studio 2017 バージョン 15.8 Preview 1 - 2018 年 5 月 8 日リリース
CVE-2018-0765 .NET Core サービス拒否の脆弱性に関する Microsoft セキュリティ アドバイザリ
- Microsoft では、.NET Core および .NET ネイティブ バージョン 2.0 の脆弱性に関する情報を提供するために、このセキュリティ アドバイザリをリリースしています。 このアドバイザリでは、開発者がこの脆弱性を削除するためにアプリケーションを更新するために実行できる操作に関するガイダンスも提供します。
- Microsoft は、.NET Framework と .NET Core が XML ドキュメントを不適切に処理する場合に存在するサービス拒否の脆弱性を認識しています。 攻撃者がこの脆弱性を悪用した場合、.NET Framework、.NET Core、または .NET ネイティブ アプリケーションに対してサービス拒否が発生する可能性があります。
- この更新プログラムは、.NET Framework、.NET Core、および .NET ネイティブ アプリケーションが XML ドキュメント処理を処理する方法を修正することで、この脆弱性を解決します。
- アプリケーションが ASP.NET Core アプリケーションの場合、開発者は ASP.NET Core 2.0.8 に更新することをお勧めします。
Visual Studio 2017 バージョン 15.8.1
リリース日: 2018 年 8 月 17 日
15.8.1 で修正された上位の問題
15.8.1 で対処される問題は次のとおりです。
- Web プロジェクトのデバッグ中にブラウザー ウィンドウが閉じられたときに Visual Studio が予期せず閉じる問題を修正しました。
Visual Studio 2017 バージョン 15.8.2
リリース日: 2018 年 8 月 28 日
15.8.2 で修正された上位の問題
15.8.2 で対処された、お客様から報告された問題を次に示します。
- 1 つのファイル コンテキスト メニュー項目が見つからない発行。
- Git ネットワーク操作が機能しない: git-askpass.exeを生成できません 。
- "Visual C++ リソース エディター パッケージ" の読み込みに失敗しました。
- Preview Transform ではエラーが発生します。
- 中かっこを入力できません。
- 更新プログラム 15.8.0 の後に Service Fabric プロジェクトをデプロイするときに、オブジェクト参照がオブジェクトのインスタンスに設定されていません。
- "指定されたパスの形式はサポートされていません" インストール エラー。
- タスク ExpandPriContent が失敗しました。 パス内の無効な文字.
- "System.Collections.Genertic.Iset'1[Signer]" インストーラー エラーのインスタンスを作成できませんでした。
- Service Fabric のデプロイは 15.8.0 で失敗します。
- Windows ストア用のアプリ パッケージを作成できません。
- 厳密に型指定されたリソースのコード生成が正しくありません。
- イタリア語レイアウトのキーボード バインド。
- IntelliSense が #9999 で破損しました。
- Unity プロジェクトで作業し、Unity が複数のプロジェクト ファイルを書き換えると、Visual Studio Tools for Unity によってソリューションが自動的に再読み込みされるようになりました。
- Visual Studio のインストールがブロックされ、1303 のエラーが発生した場合、お客様は Office アプリケーションを閉じるダイアログを受け取ります。
Visual Studio 2017 バージョン 15.8.3
リリース日: 2018 年 9 月 6 日
15.8.3 で修正された上位の問題
15.8.3 で対処された顧客から報告された問題を次に示します。
- Visual Studio 2017 バージョン 15.8.2 には、Visual Studio と互換性のない .NET Core SDK 2.1.401 のプレリリース ビルドが含まれていました。 Visual Studio 2017 バージョン 15.8.3 でこの問題を修正しました。
- VSCppUnit テスト ケースの作成エラー。
- Python IntelliSense が Python 2.7 で動作していません。
- VISUAL Studio が予期せず閉じる XAML デザイナー。
Visual Studio 2017 バージョン 15.8.4
リリース日: 2018 年 9 月 11 日
15.8.4 で修正された上位の問題
15.8.4 で対処された、お客様から報告された問題を次に示します。
- 明示的な (void) パラメーターを持つ Constexpr 関数は、MSVC 15.8.0 リリースをクラッシュします。
- TypeScriptLspCodeActionProvider でエラーが発生し、無効になっています。
- '共有 Web コンポーネント' パッケージが正しく読み込まれませんでした。
- ブラウザー リンクを有効にして CSS を編集すると、Visual Studio がクラッシュする可能性があります。
- Service Fabric のデプロイは 15.8.0 で失敗します。
- VS2017 15.8 のメンバーへの constexpr ポインターのエラーが正しくありません。
- Constexpr では、VS2017 15.8 の __declspec(dllimport) はサポートされていません。
- C++ VS 2017 Update 8 の C++14 モードと C++17 モード間のメンバー関数ポインターの違いにより、クラッシュが発生します。
- TestExplorer が最新のビルドで UI をロックアップする。
- [WebKit] 静的テンプレート メンバー定義 (回帰) の "既に定義されているシンボル" です。
- VS 15.8.0 内部コンパイラ エラー。
- constexpr 関数の内部コンパイラ エラー。
- テスト エクスプローラー ウィンドウは、Express では空白のままです。
- Visual Studio 2017 が FIPS 対応コンピューターで開くことができません。.
- VS2017 15.8 内部コンパイラ エラー 'msc1.cpp'、単純な constexpr 関数を評価するときの 1518 行目。
- VS 15.8.0 に更新した後の致命的なエラー C1001。
- VS2017 15.8 への移行: constexpr 関数をテンプレート パラメーターとして使用する場合の内部コンパイラ エラー。
- VC++ 15.8.0 で constexpr を使用してテンプレート関数をコンパイルするときの内部コンパイラ エラー。
- VC 15.8.1 コンパイラによって生成されたコードがクラッシュします。
セキュリティ アドバイザリに関する通知
Visual Studio 2017 バージョン 15.8.5
リリース日: 2018 年 9 月 20 日
15.8.5 の新機能の概要
- Visual Studio Tools for Xamarin で Xcode 10 がサポートされるようになりました。
15.8.5 で修正された上位の問題
15.8.5 で対処された、お客様から報告された問題を次に示します。
- Xamarin.iOS デバッグ セッションではデバッガーのツールヒントが展開されません。
- デバッガーでは実行ポイントを離れられません (Android)。
- 15.8.1 に更新すると、デバッグ時にデータ ヒントが表示されません。
- デバッガー のデータ ヒントが [エディター] を展開しません。
- Exception:MSB0001: 内部 MSBuild エラー: ビルド時に既に登録されています。
- VS 15.8.1 にアップグレードした後の ClickOnce のマニフェスト内のリソースへのパスが正しくありません。
- 15.8 の ClickOnce マニフェスト エラー。
- ClickOnce Publish に特定の参照がありません。
- ClickOnce: 言語ファイルが間違った場所にコピーされた。
- ClickOnce 発行フォルダーに参照がありません。
- SDK スタイルの F# プロジェクト non-.NET コンパイルすると、MSBuild の並列処理が 1 に設定されていない限り、内部 MSBuild エラーが発生します。
- F# は Visual Studio の NGEN ではありません。
- F# は、4.4.3.0 の場所に FSharp.Core 4.5.0.0 バイナリをデプロイします。
15.8.5 の新機能の詳細
Visual Studio Tools for Xamarin
Visual Studio Tools for Xamarin では、iOS 12、tvOS 12、watchOS 5 用のアプリをビルドおよびデバッグできる Xcode 10 がサポートされるようになりました。 利用可能な新機能の詳細については、 iOS 12 の準備方法 と iOS 12 の概要 を参照してください。
Visual Studio 2017 バージョン 15.8.6
リリース日: 2018 年 10 月 2 日
15.8.6 の新機能の概要
- 最新の Windows 10 SDK を使用できます。
15.8.6 で修正された上位の問題
15.8.6 で対処された、お客様から報告された問題を次に示します。
- Intellisense 用の NuGet パッケージが壊れています。
- sln を開くと Visual Studio が閉じます。
- App.Config XML エディターは 15.8.4 でフリーズしたままです。
15.8.6 の新機能の詳細
ユニバーサル Windows プラットフォーム開発者向けの最新の Windows 10 SDK
最新の Windows 10 SDK (ビルド 17763) が、ユニバーサル Windows プラットフォーム開発ワークロードのオプション コンポーネントとして使用できるようになりました。 この SDK をワークロードに追加するには、 Windows 10 SDK (10.0.17763.0) チェック ボックスをオンにします。
Visual Studio 2017 バージョン 15.8.7
リリース日: 2018 年 10 月 10 日
15.8.7 の新機能
Azure DevOps
Visual Studio Team Services が Azure DevOps になりました。 この新しいブランドは、チーム エクスプローラーと Visual Studio 全体の参照に表示されます。
セキュリティ アドバイザリに関する通知
CVE-2018-8292 .NET Core の情報漏えいの脆弱性
Visual Studio 2017 バージョン 15.8.8
リリース日: 2018 年 10 月 24 日
15.8.8 で修正された上位の問題
15.8.8 で対処された、お客様から報告された問題を次に示します。
- /DEBUG:FASTLINK は、PCH を介して含まれる STL 型のデバッグ情報がありません。
- 15.8 RTW コンパイラで見られる不適切な codegen。
- 関数のインライン化時のスタック アンワインドのヒープ破損。
- リンカーは、特定のテスト ケースに対して 6 GB のメモリを消費します。
Visual Studio 2017 バージョン 15.8.9
リリース日: 2018 年 11 月 2 日
15.8.9 で修正された上位の問題
15.8.9 で対処された、お客様から報告された問題を次に示します。
- Visual Studio Tools for Xamarin で Xcode 10.1 のサポートを追加しました。
- Xamarin.Forms テンプレートを Xamarin.Forms 3.3.0 に更新しました。
- Update 15.8.6 はインストーラー プロジェクトを中断します。
- VS15.8 msc1.cpp 行 1518 の内部コンパイラ エラー。
- Microsoft Visual Studio 2017 インストーラー プロジェクト 0.8.8 および VS 15.8.6。
- SFINAE は、プレビュー VS プレビュー 3 15.9.0 で一致するオーバーロードされた関数を検出できません。
- Visual Studio が閉じると XAML デザイナーがクラッシュします。
既知の問題
Visual Studio 2017 バージョン 15.8 の既存の既知の問題と使用可能な回避策をすべて参照してください。
Visual Studio 2017 リリース ノート履歴
過去のバージョンの Visual Studio 2017 に関連する詳細については、「Visual Studio 2017 リリース ノート履歴」のページを参照してください。