Share via


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

.NET SDK には、.NET CLI コマンドの使用時、使用状況データを収集し、Microsoft にそれを送信する製品利用統計情報機能が含まれます。 使用状況データには、.NET CLI クラッシュ時の例外情報が含まれます。 .NET CLI には .NET SDK が付属しており、.NET アプリをビルド、テスト、公開できるようにする動詞のセットです。 製品利用統計情報データは、.NET チームがツールの使い方を理解し、上達する上で役立ちます。 エラーに関する情報は、チームが問題を解決し、バグを修正するのに役立ちます。

収集されたデータは、Creative Commons Attribution License の下で全体が公開されます。 収集されたデータの一部は .NET CLI 製品利用統計情報データで発行されます。

範囲

dotnet には 2 つの関数があります。アプリを実行する関数と CLI コマンドを実行する関数です。 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 CLI コマンド (dotnet build など) の 1 つを初めて実行すると、.NET SDK により、次のようなテキストが表示されます。 テキストは、実行している 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 システムから公開されます。

ユーザーのプライバシー保護は Microsoft にとって重要です。 製品利用統計情報で機密データが収集されている、またはデータが安全でないか不適切な方法で処理されていることが疑われる場合、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 インストール成功レポート、インストーラーの実行ファイルの名前がハッシュされます。
>=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 ビルドに使用されるハッシュされた 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 ビルドに使用されるハッシュされた CompileListCount (MSBuild プロパティ)
>=6.0.104 ビルドに使用されるハッシュされた _ReadyToRunCompilationFailures (MSBuild プロパティ)
>=6.0.300 CLI が継続的インテグレーション環境から呼び出された場合。 詳細については、「継続的インテグレーション検出」を参照してください。
>=7.0.100 ビルドに使用されるハッシュされた PublishAot (MSBuild プロパティ)
>=7.0.100 ビルドに使用されるハッシュされた PublishProtocol (MSBuild プロパティ)

収集されるオプション

一部のコマンドでは、追加データが送信されます。 コマンドのサブセットで最初の引数が送信されます。

コマンド 送信される最初の引数データ
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

--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 の品質を向上させる目的で収集されます。 この記事では、Microsoft が収集するデータについて説明します。 また、独自のバージョンの .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 Travis CI ブール値を解析する
CIRCLECI Circle CI ブール値を解析する
CODEBUILD_BUILD_ID、AWS_REGION Amazon Web Services CodeBuild すべてが存在し、null でないかどうかを確認する
BUILD_ID、BUILD_URL Jenkins すべてが存在し、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 のカスタム ビルドは、個人情報や機密情報がパス名から明らかになるディレクトリには置かないでください。

関連項目