収集されたデータは、Creative Commons Attribution Licenseの下で集計して公開されます。 収集されたデータの一部は、.NET CLI テレメトリ データ
Scope
dotnet には、アプリの実行と CLI コマンドの実行という 2 つの機能があります。
を使用して次の形式でアプリケーションを起動する場合、テレメトリ dotnet 収集されません。
dotnet [path-to-app].dll
テレメトリ は、次のような .NET CLI コマンドを使用する場合に 収集されます。
dotnet builddotnet packdotnet 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に設定します。 この変数は、テレメトリのオプトアウトには影響しません。
注
破壊的変更:stderrに書き込まれたテレメトリ メッセージの動作は、最近のバージョンの .NET SDK で変更されました。 詳細については、dotnet CLI コマンドはコマンドに関連しないデータを stderr に記録することを確認してください。
データ ポイント
テレメトリ機能では、ユーザー名やメール アドレスなどの個人データは収集されません。 コードはスキャンせず、名前、リポジトリ、作成者などのプロジェクト レベルのデータは抽出されません。 アプリがアクセスまたは作成したデータ ファイルの内容、アプリのオブジェクトによって占有されているメモリのダンプ、クリップボードの内容は抽出されません。 データは、 Azure Monitor テクノロジを使用して Microsoft サーバーに安全に送信されます。 データは制限付きアクセスの下に保持され、セキュリティで保護された Azure Storage システムからの厳密なセキュリティ制御の下で公開されます。
お客様のプライバシーの保護は、Microsoft にとって重要です。 テレメトリが機密データを収集していると思われる場合、またはデータが安全でないか不適切に処理されていると思われる場合は、 dotnet/sdk リポジトリに問題を報告してください。
お客様のプライバシーと収集された個人データの詳細については、 Microsoft のプライバシーに関する声明を参照してください。
次のタブには、SDK バージョンによってキャプチャされたテレメトリ データが表示されます。
-
SDK バージョン 10.0.100 以降:
-
dotnet runのハッシュされたプロジェクト識別子。 -
dotnet runのファイル ベースのアプリまたはプロジェクト ベースのアプリケーションの種類。 -
dotnet runに指定されている場合の起動プロファイル名。 - 起動プロファイルが
dotnet runに指定されたかどうか。 -
dotnet runに使用される起動設定構成モデル (存在する場合)。 -
dotnet runに使用される SDK の数。 -
dotnet runの PackageReference の数。 -
dotnet runの ProjectReference の数。 -
dotnet runを持つファイル ベースのアプリの追加プロパティの数。 - MSBuild が
dotnet runを使用するファイル ベースのアプリに使用されたかどうか。 - Roslyn コンパイラが、
dotnet runを使用するファイル ベースのアプリに使用されたかどうか。 - CLI が LLM エージェントから呼び出された場合に検出された LLM エージェント名。 詳細については、 LLM 検出を参照してください。
- コマンドが呼び出されたときに
global.json状態をキャプチャします。 状態は、 not_found、 有効、 invalid_json、または invalid_dataのいずれかの値です。 - タスクの読み込みと実行に使用される MSBuild タスク ファクトリ (インライン C# タスク、マルチスレッド対応タスク、アウトプロセス タスクなど)、および実行されるタスクの数。
- TaskHosts で実行された MSBuild タスクと TaskHosts で実行されていないタスクの数。
-
収集されたオプション
特定のコマンドでは、追加のデータが送信されます。 コマンドのサブセットは、最初の引数を送信します。
| コマンド | 最初に送信された引数データ |
|---|---|
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 が組み込みコマンドの解決に失敗すると、コマンドを正常に解決したコマンド リゾルバーは、コマンド リゾルバーの種類の名前と共にコマンド名のハッシュを送信します。
.NET Core 2.1.100 SDK 以降、SDK は、 --verbosity と --sdk-package-versionを除くすべての値をハッシュします。
テンプレートエンジンのテレメトリ
.NET Core 2.1.100 SDK 以降、 dotnet new テンプレートのインスタンス化コマンドは、Microsoft が作成したテンプレートの追加データを収集します。
--framework--auth
dotnet run telemetry (テレメトリー データを実行)
.NET SDK 10.0.100 以降では、 dotnet run コマンドは機能ベースのテレメトリを収集して、ファイル ベースのアプリの開発と使用を促進します。
dotnet run
- アプリケーションの種類 (ファイル ベースまたはプロジェクト ベース)
- ハッシュされたプロジェクトまたはファイル識別子
- 使用された SDK の数
- PackageReferences の数
- ProjectReferences の数
- 起動プロファイルの使用状況 (
--launch-profileまたは--no-launch-profileが使用されたかどうか) - 起動プロファイルが既定のプロファイルかどうか
- 設定モデルが適用されている場合の起動設定
ファイルベースのアプリ専用のテレメトリ:
- 追加プロパティの数 (
#:propertyディレクティブなど) - MSBuild がビルドに使用されたかどうか
- Roslyn コンパイラが直接使用されたかどうか
クラッシュ例外製品利用統計情報
.NET CLI または SDK がクラッシュすると、CLI または SDK コードの例外とスタック トレースの名前が収集されます。 .NET CLI は、この情報を収集して問題を評価し、.NET SDK と CLI の品質を向上させます。
.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 共同作成者と、自分でビルドした .NET SDK のバージョンを実行している他のユーザーは、SDK ソース コードへのパスを考慮する必要があります。 カスタム デバッグ ビルドまたはカスタム ビルド シンボル ファイルを使用して構成された .NET SDK の使用中にクラッシュが発生した場合、ビルド マシンからの SDK ソース ファイル パスはスタック トレースの一部として収集され、ハッシュされません。
このため、パス名が個人情報または機密情報を公開するディレクトリには、.NET SDK のカスタム ビルドを配置しないでください。
継続的インテグレーション検出
.NET CLI が継続的インテグレーション環境で実行されているかどうかを検出するために、.NET CLI は、一般的な CI プロバイダーが設定するいくつかの既知の環境変数の存在と値をチェックします。
次の一覧は、環境変数と、.NET CLI で値がどのように使用されるかを示しています。 .NET CLI では、環境変数の値は収集されません。値を使用してブール値フラグを設定するだけです。
| 変数 | 供給者 | アクション |
|---|---|---|
TF_BUILD |
Azure Pipelines | ブール値の解析 |
GITHUB_ACTIONS |
GitHub Actions | ブール値の解析 |
APPVEYOR |
Appveyor | ブール値の解析 |
CI |
多くの/ほとんどの | ブール値の解析 |
TRAVIS |
Travis CI | ブール値の解析 |
CIRCLECI |
Circle CI | ブール値の解析 |
CODEBUILD_BUILD_ID、AWS_REGION |
アマゾン ウェブ サービス 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 以外かどうかを確認する |
LLM 検出
.NET CLI が LLM エージェントのコンテキストで実行されているかどうかを検出するために、.NET CLI は、LLM エージェントと AI コーディング アシスタントが設定した複数の環境変数の存在と値をチェックします。
次の表は、エージェント名、検出に使用される環境変数、および報告されるエージェントの種類の値を示しています。 これらの環境変数の実際の値は収集されず、エージェントの種類を識別するためにのみ使用されます。
| LLM エージェント | Variable | 価値 |
|---|---|---|
| GitHub Copilot | GITHUB_COPILOT_CLI_MODE |
共同操縦士 |
| Claude Code | CLAUDECODE |
"claude" |
| Cursor | CURSOR_EDITOR |
カーソル |
| Google Gemini | GEMINI_CLI |
"gemini" |
.NET CLI で複数のエージェントが検出された場合は、異なるエージェント値をコンマで連結して最終的な値を生成します。
関連項目
.NET