.NET SDK と .NET CLI テレメトリ
収集されたデータは、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> |
add 、list 、または remove という単語。 |
dotnet nuget <arg> |
delete 、locals 、または push という単語。 |
dotnet workload <subcommand> <arg> |
install 、update 、list 、search 、uninstall 、repair 、restore 、ワークロード名 (ハッシュ) という単語。 |
dotnet tool <subcommand> <arg> |
install 、update 、list 、search 、uninstall 、run という単語および 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 build 、dotnet 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 のカスタム ビルドは、パス名が個人情報または機密情報を公開するディレクトリに配置しないでください。
関連項目
.NET