.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 プロパティ) |
>=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 |
--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 のカスタム ビルドは、個人情報や機密情報がパス名から明らかになるディレクトリには置かないでください。
関連項目
.NET