次の方法で共有


.NET SDK と .NET CLI テレメトリ

.NET SDK には、使用状況データを収集し、.NET CLI コマンドを使用するときに Microsoft に送信 テレメトリ機能が含まれています。 使用状況データには、.NET CLI がクラッシュしたときに例外情報が含まれます。 .NET CLI には .NET SDK が付属しており、.NET アプリのビルド、テスト、発行を可能にする動詞のセットです。 テレメトリ データは、ツールの使用方法を .NET チームが理解し、改善するのに役立ちます。 失敗に関する情報は、チームが問題を解決し、バグを修正するのに役立ちます。

収集されたデータは、Creative Commons Attribution Licenseの下で集計して公開されます。 収集されたデータの一部は、.NET CLI テレメトリ データで公開されます。

スコープ

dotnet には、アプリの実行と CLI コマンドの実行という 2 つの機能があります。 dotnet を使用して次の形式でアプリケーションを起動する場合、テレメトリ 収集されません。

  • dotnet [path-to-app].dll

テレメトリ は、次のような .NET CLI コマンドを使用する場合に 収集されます。

  • dotnet build
  • dotnet pack
  • dotnet run

オプトアウトする方法

.NET SDK テレメトリ機能は、SDK の Microsoft ディストリビューションに対して既定で有効になっています。 テレメトリ機能をオプトアウトするには、DOTNET_CLI_TELEMETRY_OPTOUT 環境変数を 1 または trueに設定します。

インストールが成功すると、.NET SDK インストーラーによって 1 つのテレメトリ エントリも送信されます。 オプトアウトするには、.NET SDK をインストールする前に、DOTNET_CLI_TELEMETRY_OPTOUT 環境変数を設定します。

重要

インストーラーを開始した後でオプトアウトするには、インストーラーを閉じ、環境変数を設定してから、その値を設定してインストーラーをもう一度実行します。

開示

.NET SDK では、.NET CLI コマンドの 1 つ (たとえば、dotnet build) を最初に実行すると、次のようなテキストが表示されます。 テキストは、実行している SDK のバージョンによって若干異なる場合があります。 この "最初の実行" エクスペリエンスは、Microsoft がデータ収集について通知する方法です。

Telemetry
---------
The .NET tools collect usage data in order to help us improve your experience. The data is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.

Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry

このメッセージと .NET ウェルカム メッセージを無効にするには、DOTNET_NOLOGO 環境変数を trueに設定します。 この変数は、テレメトリのオプトアウトには影響しません。

データ ポイント

テレメトリ機能では、ユーザー名やメール アドレスなどの個人データは収集されません。 コードはスキャンせず、名前、リポジトリ、作成者などのプロジェクト レベルのデータは抽出されません。 アプリがアクセスまたは作成したデータ ファイルの内容、アプリのオブジェクトによって占有されているメモリのダンプ、クリップボードの内容は抽出されません。 データは、Azure Monitor テクノロジを使用して Microsoft サーバーに安全に送信され、制限付きアクセスで保持され、セキュリティで保護された Azure Storage システムからの厳密なセキュリティ制御の下で公開されます。

お客様のプライバシーの保護は、当社にとって重要です。 テレメトリが機密データを収集していると思われる場合、またはデータが安全でまたは不適切に処理されていないと思われる場合は、dotnet/sdk リポジトリに問題を報告するか、調査のために dotnet@microsoft.com に電子メールを送信します。

テレメトリ機能は、次のデータを収集します。

SDK のバージョン データ
すべて 呼び出しのタイムスタンプ。
すべて コマンドが呼び出され ("build"など)、2.1 以降でハッシュされます。
すべて 地理的な場所を決定するために使用される 3 オクテット IP アドレス。
すべて オペレーティング システムとバージョン。
すべて SDK が実行されているランタイム ID (RID)。
すべて .NET SDK のバージョン。
すべて テレメトリ プロファイル: 省略可能な値は、明示的なユーザーオプトインでのみ使用され、Microsoft で内部的に使用されます。
>=2.0 コマンド引数とオプション: いくつかの引数とオプションが収集されます (任意の文字列ではありません)。 収集されたオプション を参照してください。 バージョン 2.1.300 より後にハッシュされます。
>=2.0 SDK がコンテナーで実行されているかどうか。
>=2.0 ターゲット フレームワーク (TargetFramework イベントから)、2.1 以降でハッシュされます。
>=2.0 ハッシュ メディア アクセス制御 (MAC) アドレス (SHA256)。
>=2.0 ハッシュされた現在の作業ディレクトリ。
>=2.0 ハッシュインストーラーの exe ファイル名を含む成功レポートをインストールします。
>=2.1.300 カーネル バージョン。
>=2.1.300 Libc リリース/バージョン。
>=3.0.100 出力がリダイレクトされたかどうか (true または false)。
>=3.0.100 CLI/SDK がクラッシュした場合、例外の種類とそのスタック トレース (送信されるスタック トレースには CLI/SDK コードのみが含まれます)。 詳細については、「クラッシュ例外テレメトリ」を参照してください。
>=5.0.100 ビルドに使用されるハッシュされた TargetFrameworkVersion (MSBuild プロパティ)
>=5.0.100 ビルドに使用される Hashed RuntimeIdentifier (MSBuild プロパティ)
>=5.0.100 ビルドに使用されるハッシュされた SelfContained (MSBuild プロパティ)
>=5.0.100 ビルドに使用されるハッシュ化された UseApphost (MSBuild プロパティ)
>=5.0.100 ビルドに使用されるハッシュされた OutputType (MSBuild プロパティ)
>=5.0.201 ビルドで使用するハッシュされた PublishReadyToRun (MSBuild プロパティ)
>=5.0.201 ビルドに使用されるハッシュされた PublishTrimmed (MSBuild プロパティ)
>=5.0.201 ビルドに使用されるハッシュされた PublishSingleFile (MSBuild プロパティ)
>=5.0.202 プロセスの開始から CLI プログラムのメイン メソッドに入るまでの経過時間。ホストとランタイムの起動を測定します。
>=5.0.202 最初の実行時にパスに .NET ツールを追加するステップの経過時間。
>=5.0.202 初回実行時に初めて使用する通知を表示するまでの経過時間。
>=5.0.202 初回実行時に証明書 ASP.NET 生成するための経過時間。
>=5.0.202 CLI 入力を解析するための経過時間。
>=6.0.100 OS アーキテクチャ
>=6.0.104 ビルドに使用されるハッシュ化済みのPublishReadyToRunUseCrossgen2 (MSBuild プロパティ)
>=6.0.104 ビルドに使用されるハッシュされた Crossgen2PackVersion (MSBuild プロパティ)
>=6.0.104 ビルドに使用される Hashed CompileListCount (MSBuild プロパティ)
>=6.0.104 ビルドに使用されるハッシュされた _ReadyToRunCompilationFailures (MSBuild プロパティ)
>=6.0.300 CLI が継続的インテグレーション環境から呼び出された場合。 詳細については、「継続的インテグレーション検出」を参照してください。
>=7.0.100 ビルドに使用される PublishAot のハッシュ値 (MSBuild のプロパティ)
>=7.0.100 ビルドに使用されるハッシュされた PublishProtocol (MSBuild プロパティ)
>=8.0.100 ビルドに使用されるハッシュされた TargetPlatformIdentifier (MSBuild プロパティ)
>=8.0.100 ビルドに使用されるハッシュ化された HybridGlobalization (MSBuild プロパティ)
>=8.0.100 .NET Blazor WebAssembly SDK を使用するかどうか。
>=8.0.100 .NET WebAssembly SDK を使用するかどうか。
>=8.0.100 .NET MAUI が使用されているかどうか。
>=8.0.100 .NET モバイル SDK が使用されているかどうか。
>=8.0.100 他のモバイル SDK が使用されるかどうか (例: Avalonia、Uno)。
>=8.0.100 Mono AOT を使用するかどうか。
>=8.0.100 Mono AOT ストリップ IL 機能を使用するかどうか。
>=8.0.100 Mono インタープリターを使用するかどうか。
>=8.0.100 モバイルのライブラリ モードを使用するかどうか。
>=8.0.100 NativeAOT が使用されるかどうか。
>=8.0.100 Mono ランタイム パックのバージョンを使用しました。

収集されたオプション

特定のコマンドは、追加のデータを送信します。 コマンドのサブセットは、最初の引数を送信します。

コマンド 最初に送信された引数データ
dotnet help <arg> コマンドのヘルプが求められます。
dotnet new <arg> テンプレート名 (ハッシュ)。
dotnet add <arg> package または reference という単語。
dotnet remove <arg> package または reference という単語。
dotnet list <arg> package または reference という単語。
dotnet sln <arg> addlist、または removeという単語。
dotnet nuget <arg> deletelocals、または pushという単語。
dotnet workload <subcommand> <arg> installupdatelistsearchuninstallrepairrestore、ワークロード名 (ハッシュ) という単語。
dotnet tool <subcommand> <arg> installupdatelistsearchuninstallrun という単語および dotnet ツール名 (ハッシュされたもの)。

コマンドのサブセットは、選択したオプションが使用されている場合、その値と共に送信されます。

回答内容 コマンド
--verbosity すべてのコマンド
--language dotnet new
--configuration dotnet build, dotnet clean, dotnet publish, dotnet run, dotnet test
--framework dotnet build, dotnet clean, dotnet publish, dotnet run, dotnet test, dotnet vstest
--runtime dotnet builddotnet publish
--platform dotnet vstest
--logger dotnet vstest
--sdk-package-version dotnet migrate

SDK が組み込みコマンドの解決に失敗すると、コマンドを正常に解決したコマンド リゾルバーは、コマンド リゾルバーの種類の名前と共にコマンド名のハッシュを送信します。

--verbosity--sdk-package-versionを除き、他のすべての値は .NET Core 2.1.100 SDK 以降でハッシュされます。

テンプレートエンジンのテレメトリ

dotnet new テンプレートのインスタンス化コマンドは、.NET Core 2.1.100 SDK 以降で、Microsoft が作成したテンプレートの追加データを収集します。

  • --framework
  • --auth

クラッシュ例外製品利用統計情報

.NET CLI/SDK がクラッシュすると、CLI/SDK コードの例外とスタック トレースの名前が収集されます。 この情報は、問題を評価し、.NET SDK と CLI の品質を向上させるために収集されます。 この記事では、収集するデータに関する情報を提供します。 また、ユーザーが独自のバージョンの .NET SDK を構築することで、個人情報や機密情報が誤って漏えいするのを回避する方法に関するヒントも提供します。

.NET CLI は、アプリケーションの例外ではなく、CLI/SDK 例外についてのみ情報を収集します。 収集されたデータには、例外の名前とスタック トレースが含まれます。 このスタック トレースは CLI/SDK コードです。

次の例は、収集されるデータの種類を示しています。

System.IO.IOException
at System.ConsolePal.WindowsConsoleStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.IO.StreamWriter.Write(Char[] buffer)
at System.IO.TextWriter.WriteLine()
at System.IO.TextWriter.SyncTextWriter.WriteLine()
at Microsoft.DotNet.Cli.Utils.Reporter.WriteLine()
at Microsoft.DotNet.Tools.Run.RunCommand.EnsureProjectIsBuilt()
at Microsoft.DotNet.Tools.Run.RunCommand.Execute()
at Microsoft.DotNet.Tools.Run.RunCommand.Run(String[] args)
at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient)
at Microsoft.DotNet.Cli.Program.Main(String[] args)

継続的インテグレーション検出

.NET CLI が継続的インテグレーション環境で実行されているかどうかを検出するために、.NET CLI は、一般的な CI プロバイダーが設定するいくつかの既知の環境変数の存在と値をプローブします。

環境変数の完全な一覧と、その値で実行される内容を次に示します。 どの場合も、環境変数の値は収集されることはなく、ブール値フラグの設定にのみ使用されることに注意してください。

変数 供給者 アクション
TF_BUILD Azure Pipelines ブール値の解析
GITHUB_ACTIONS GitHub のアクション ブール値の解析
APPVEYOR Appveyor ブール値の解析
CI 多くの/ほとんどの ブール値の解析
トラビス Travis CI ブール値の解析
CIRCLECI Circle CI ブール値の解析
CODEBUILD_BUILD_ID、AWS_REGION アマゾン ウェブ サービス CodeBuild すべてが存在し、null でないかどうかを確認する
BUILD_ID、BUILD_URL ジェンキンス すべてが存在し、null でないかどうかを確認する
BUILD_ID、PROJECT_ID Google Cloud Build すべてが存在し、null でないかどうかを確認する
TEAMCITY_VERSION TeamCity 存在するかどうかと null 以外かどうかを確認する
JB_SPACE_API_URL JetBrains Space 存在するかどうかと null 以外かどうかを確認する

情報の不注意による開示を回避する

.NET 共同作成者と、自分でビルドした .NET SDK のバージョンを実行している他のユーザーは、SDK ソース コードへのパスを考慮する必要があります。 カスタム デバッグ ビルドまたはカスタム ビルド シンボル ファイルを使用して構成された .NET SDK の使用中にクラッシュが発生した場合、ビルド マシンからの SDK ソース ファイル パスはスタック トレースの一部として収集され、ハッシュされません。

このため、.NET SDK のカスタム ビルドは、パス名が個人情報または機密情報を公開するディレクトリに配置しないでください。

関連項目