dotnetup のトラブルシューティング

Note

dotnetup はパブリック プレビュー段階です。 その機能と動作は、一般公開前に変更される可能性があります。

この記事では、一般的な dotnetup の問題とその解決方法について説明します。

診断情報の収集

問題のトラブルシューティングを行う前に、次の情報を収集します。

  • dotnetupバージョン、アーキテクチャ、ランタイム識別子、および検証済みインストールを表示します。

    dotnetup --info
    
  • 追跡されているインストール仕様とインストールを表示し、ディスク上のファイルを確認します。

    dotnetup list
    
  • 格納されている環境の構成を現在の環境と比較します。

    dotnetup env show
    
  • 詳細な出力を使用して、失敗したコマンドをもう一度実行してください。 例えば次が挙げられます。

    dotnetup sdk install 10.0 --verbosity detailed
    

プロジェクトがビルドされないか、セットアップ後にアプリが起動しない

現象: Windowsでdotnetup モードでeverywhere を設定した後、以前にビルドしたプロジェクトはビルドに失敗します。 または、フレームワークに依存するアプリでは、次のエラーが表示されます。

You must install or update .NET to run this application.

原因:everywhere モードでは、dotnetup で管理されるインストールは、Program Files のマシン全体のインストールよりも優先されます。 マシン全体のインストールにのみ存在する SDK とランタイムは使用できません。

解決策: コンピューター全体の SDK とランタイムを dotnetup で管理されるインストールに移行します。

dotnetup sdk install --migrate-from-system
dotnetup runtime install --migrate-from-system

または、 shell または none アクセス モードに変更します。 詳細については、「Everywhere モードに関する考慮事項」を参照してください。

dotnet は dotnetup で管理されたインストールを使用しない

現象: ターミナルの dotnet コマンドでは、dotnetup がインストールした SDK は使用されません。

原因: ターミナルが dotnetup が環境を変更する前に開かれていたか、環境の構成が保存されている構成と一致しません。

Solution:

  1. 新しいターミナルを開きます。 シェル プロファイルまたはWindows環境変数に対する変更は、既に開いているターミナルには影響しません。

  2. dotnetup env show を実行します。 ドリフトが報告された場合は、dotnetup env set を実行して格納された構成をもう一度適用してください。

  3. 現在のターミナルのみを構成するには、dotnetup env script の出力を実行します。 たとえば、Bash または zsh では次のようになります。

    eval "$(dotnetup env script)"
    

    PowerShell では次のとおりです。

    dotnetup env script --shell pwsh | Invoke-Expression
    

詳細については、「dotnetup 環境の管理」を参照してください。

インストール パスに未追跡のインストールが既に含まれている

現象: インストール コマンドは、次のエラーで失敗します。

The install path '<path>' already contains a .NET installation that is not tracked by dotnetup. To avoid conflicts, use a different install path, remove the existing installation first, or use the --untracked option to install without tracking.

原因:dotnetupは、追跡していない .NET インストールが含まれるフォルダーには追跡対象のファイルをインストールしません。このチェックにより、dotnetupが別のツールが所有するファイルとファイルを混在させるのを防ぐことができます。

解決策: 次のいずれかの操作を行います。

  • --install-path オプションで別のフォルダーを選択します。
  • フォルダーから既存のインストール済みファイルを削除します。
  • 別のツールがフォルダーを所有している場合は、--untracked オプションを使用してください。 dotnetup では、追跡されていないファイルの一覧表示、更新、削除は行われません。

詳細については、「 カスタム インストール ルートの管理」を参照してください。

dotnet 実行可能ファイルが使用中です

現象:Windowsでは、インストール コマンドに次のような警告が表示されます。

Warning: Could not update dotnet executable at '<path>' - it is currently in use by another process. Close all running .NET applications and try again. The existing muxer will be retained. ...

原因: 実行中のプロセスが dotnet 実行可能ファイルを使用しているため、dotnetup は置き換えられません。 インストールは、既存の dotnet 実行可能ファイルで続行されます。 新しいランタイムには、新しい dotnet 実行可能ファイルが必要になる場合があります。

解決策:実行中のすべての.NETアプリ、IDE、ビルド サーバーを閉じます。 次に、install コマンドをもう一度実行してください。 警告を表示して続行する代わりにコマンドを失敗させるには、--require-muxer-update オプションを使用します。

別の dotnetup プロセスが実行されている

現象: コマンドは次のメッセージを表示し、待機します。

Another dotnetup process is running. Waiting for it to finish...

原因:dotnetup 共有インストール状態への変更を順次化します。 別の dotnetup コマンドが同じ状態を変更しています。

解決策: 他のコマンドが完了するまで待ちます。 他の dotnetup プロセスが実行されていない場合は、応答を停止した dotnetup プロセスを探して終了してください。

マニフェストが破損しています

症状: コマンドの実行時に、次のエラーが発生します。

The dotnetup manifest at <path> is corrupt. Consider deleting it and re-running the install.

メッセージは、ファイルがdotnetup外で変更されたことを示すこともできます。

原因: そのdotnetup_manifest.jsonファイルが無効です。 別のプロセスまたは手動編集によってファイルが変更された可能性があります。

解決策: dotnetup データ ディレクトリからマニフェスト ファイルと対応する .sha256 ファイルを削除します。 次に、必要な SDK とランタイムを再インストールしてください。 マニフェストは既存のインストール ルートを追跡しなくなったため、最初にそのフォルダーを削除する必要がある場合もあります。 データ ディレクトリの場所については、「 dotnetup の更新または削除」を参照してください。

Note

マニフェスト ファイルは編集しないでください。 dotnetupコマンドを使用して、追跡対象の状態を変更します。

構成ファイルが破損しています

現象: コマンドで次の警告が表示されます。

Warning: The dotnetup config file at <path> appears to be corrupted and could not be read: ...

原因:dotnetup.config.json ファイルが無効です。 dotnetup はファイルを無視します。

解決策: 必要なアクセス モードで dotnetup env set を実行するか、 dotnetup init をもう一度実行します。 これらのコマンドは、新しい設定を書き込みます。

シェル プロファイルに無効な dotnetup ブロックが含まれている

現象:env コマンドは、次のメッセージのようなエラーで失敗します。

The shell profile '<path>' contains a malformed dotnetup block: '<begin marker>' does not have a matching '<end marker>'. Remove or repair the block manually and try again.

原因:dotnetup は、シェル プロファイルに追加した行を開始コメントと終了コメントでマークします。 これらのコメントのいずれかがありません。

解決策: テキスト エディターでシェル プロファイルを開きます。 不完全な dotnetup ブロックを削除するか、不足しているマーカーを追加します。 次に、コマンドをもう一度実行します。

権限昇格が取り消されました

現象:Windowsでは、everywhereモードをオンまたはオフにするコマンドは、次のメッセージを表示します。

Elevation was cancelled. The system PATH was not modified.

原因: システムへの変更PATHには管理者権限が必要です。 ユーザー アカウント制御 (UAC) プロンプトが取り消されました。

解決策: コマンドをもう一度実行し、UAC プロンプトを承認してください。 または、昇格を必要としない shell または none アクセス モードを選択します。

リリース マニフェストの有効期限が切れています

現象: リリース マニフェストの検証中に、インストールまたは更新がエラー コード ExpiredNow で失敗します。

原因: 現在のシステム時刻は、マニフェストの有効期限以降です。 マニフェストの有効期限が切れているか、システム クロックが正しくない可能性があります。 有効な署名では、期限切れのマニフェストは受け入れられません。

Solution:

  1. システムの日付と時刻を確認してください。 必要に応じて、時計を修正してください。
  2. コマンドを再実行してください。 プロキシがキャッシュされたリリース メタデータを提供する場合は、期限切れのマニフェストを提供していないか管理者に確認するよう依頼してください。
  3. クロックが正しく、障害が解決しない場合は、コマンドの詳細出力を添えて問題を報告してください。

マニフェストを編集したり、有効期限チェックをバイパスするようにクロックを変更したりしないでください。 詳細については、「マニフェストの有効期限」を参照してください。

IT ポリシーによってインストールがブロックされる

現象: デイリーまたはプレリリースのビルドのインストールが失敗し、IT ポリシーでコード署名されたダウンロードが必要であることを示すメッセージが表示されます。

原因: 管理者がマシン上の署名されていないダウンロードをブロックしました。

解決策: リリースされたバージョンをインストールするか、管理者にポリシーをクリアするよう依頼します。 詳細については、「 dotnetup がダウンロードを検証する方法」を参照してください。

問題を報告する

この記事で問題が解決しない場合は、既存の dotnetup issuesを検索してください。 一致するものが見つからない場合は、dotnet/sdk リポジトリで dotnetup issue テンプレートを使用して新しい問題を開きます。 dotnetup --infoの出力と、失敗したコマンドの出力を--verbosity detailedに含めてください。

質問や提案については、 dotnetup ディスカッションを使用してください。

参照