インストール済みの .Net SDK が行方不明になった話

昨日の続きです

Visual Studio 2019 の .Net Core ソリューション内のプロジェクトが全部アンロードされてビビった話

起こったこと

1、発行したアプリを起動しようとすると以下のエラーが出た

Failure processing application bundle. Bundle header version compatibility check failed A fatal error was encountered. Could not extract contents of the bundle

2、昨日適当に指定した SDK のバージョンが悪かったと当たりを付けて別のバージョンをためそうとした

3、dotnet –list-sdks コマンドによると、指定した以外の SDK のバージョンが存在していなかった

4、プログラム一覧だと存在するが、構わず再インストールをしてみたがリストに追加されなかった

 

原因

dotnet の path が変わっており、32bit版が呼ばれるようになっていた

自分のPCは当然64bitであり、SDK も64bit版がインストールされていた。

32bit版の dotnet からは当然32bit版の SDK しか呼ばれないためなんかの拍子にインストールされた一種類のみが表示されていた様子。

 

Program Files(x86)/dotnet とProgam FIles/dotnet の違いは余りにも大きい…

Windows10 64bit では 前者が32ビット用プログラム、後者が64ビット用プログラム

 

対策

環境変数の Path  を書き換える

該当する行の(x86)を消しただけで全て解決した。

ついでに昨日追加した global.json も消したけど問題なく動作した。

 

関連する雑感

VS では global.json が見つからない場合は自動で最新の安定板 SDK を選択するようになっているらしい。それで Path が書き換わるまでは問題なく動作していたようだ。32ビット版 SDK はプレビュー版しかインストールされていなかったためエラーが出るようになったらしい。 global.json で明示的にしていすればプレビュー版も使用できることが逆に問題の切り分けを難しくしたような気もする。

この問題はめちゃくちゃ悩んで「dotnet SDK 消えた」とか「dotnet SDK 参照」とか「dotnet SDK 選択」とか検索しまくったけど、dotnet –list-sdks して出てこないケースについては全然情報を得られなかったのでしんどかった。

 

答えに気付けたきっかけは dotnet –info で表示させた情報を眺めていた時のこと、

        RID: win10-x86

なる行を見つけたこと。dotnet が32bitで実行されてる?というところに気付いてからは早かった。

そもそも –list-sdks の時点で 

        ほにゃほにゃ プレビュー版 [C:\Program Files(x86)\dotnet\sdk]

って表示されてたので、そこで気づけてればもっと早かったかも。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です