posted at 2022-01-14
updated at 2022-01-14
言語バージョンを更新したらビルドできない!
VS2019で作成したソリューションのプロジェクトはデフォルトで以下の設定になります。
- ターゲットフレームワーク:net5.0
- 言語:C# 9.0(latest)
VS2019で作成したソリューションとプロジェクトは、.slnファイルや.csprojファイルの中身の構造がVS2022では変更されませんでしたのでVS2022でそのまま開くことが可能です。
しかし、この状態でうきうきでC#10.0のglobal usingやfile scoped namespaceに書き換えを行っても、「{が必要です」といった基本的な文法エラーで殴られてビルドが通らないことがあります。アイエエエ!?CS1513!?CS1513ナンデ!?
(以下、うきうきで変更したら怒られたときの画面)
上図をよく見たらわかるのですが、実はVS2022のエディタはエラーだと思っていない(問題は見つかりませんでしたとか言ってる)のにビルド時にエラーになってます。
ついでにCS8032で「アナライザー System.Text.Json.SourceGeneration.JsonSourceGenerator のインスタンスは C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.1\analyzers\dotnet\cs\System.Text.Json.SourceGeneration.dll (ファイルまたはアセンブリ 'Microsoft.CodeAnalysis, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。) から作成できません。」とか言われて警告ビンタされます。
本稿ではこれの原因と対処法について説明します。
原因はSourceGeneratorとかに使うMicrosoft.Net.Compilers.Toolset
結論からいうとMicrosoft.Net.Compilers.Toolsetを参照しているプロジェクトはこのライブラリのバージョンを更新しないとビルドが通りません。
こいつの説明に答えが書いてあります。
.NET Compilers Toolset Package.
Referencing this package will cause the project to be built using the C# and Visual Basic compilers contained in the package, as opposed to the version installed with MSBuild.
以下、google翻訳
.NETコンパイラツールセットパッケージ。
このパッケージを参照すると、MSBuildでインストールされたバージョンではなく、パッケージに含まれているC#およびVisualBasicコンパイラを使用してプロジェクトがビルドされます。
そんな仕様だったの!?という感じではありますが、.csprojファイルで設定したターゲットフレームワークやLangVersionよりも優先してMicrosoft.Net.Compilers.Toolsetに内蔵されたRoslynコンパイラが動作する、というわけです。RoslynコンパイラのバージョンはMicrosoft.Net.Compilers.Toolset.dllによって決まります。このため、dllのバージョンが古いとC#10より前のコンパイラでビルドされるのでビルド時にエラーが出るというわけです。エディタのエラー検出に使うコンパイラはおそらく.csprojの設定に依存して決まるのでしょう。多分。
dllのバージョンとRoslynコンパイラのバージョンの対応
MSDNに対応表があります。2022/01/14時点では3.xまでしか表がありません(英語サイトも)が、そのうち追加されるでしょう。
3.x | Visual Studio 2019 |
2.10.0 | Visual Studio 2017 バージョン 15.9 |
2.9.0 | Visual Studio 2017 バージョン 15.8 |
2.8.2 | Visual Studio 2017 バージョン 15.7 |
2.7.0 | Visual Studio 2017 バージョン 15.6 |
2.6.1 | Visual Studio 2017 バージョン 15.5 |
2.4.0 | Visual Studio 2017 バージョン 15.4 |
2.3.2 | Visual Studio 2017 バージョン 15.3 |
2.2.0 | Visual Studio 2017 バージョン 15.2 |
2.1.0 | Visual Studio 2017 バージョン 15.1 |
2.0.0 | Visual Studio 2017 RTM |
1.3.2 | Visual Studio 2015 更新プログラム 3 |
1.2.2 | Visual Studio 2015 更新プログラム 2 |
1.1.1 | Visual Studio 2015 更新プログラム 1 |
1.0.1 | Visual Studio 2015 RTM |
私のプロジェクトでは3.11.0を使っていました。そりゃビルドが通らんわ・・・というわけでUpdate-Packageを実行すればビルドが通ったのでした。
なお、記事作成時点では最新バージョンは4.0.1になります。
あとがき
初めてC#を触ったときから「namespaceなんて99%はファイル全体で同じなのになんでインデントせにゃいかんの?」と思っていたのが、C#10.0でようやく解消できます。ずいぶん待たされましたし、file scoped namespaceが導入される理由が「HelloWorldの簡略化」みたいなとこがありますが、これが嫌だったのは私だけだったんでしょうか?
他にもC#10やNET6にはたくさんの機能追加があります。特にLINQのMaxBy,MinByは待望の機能ではないでしょうか?みなさんもぜひ最新バージョンへのアップデートを行いましょう!
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
What you can do with signing up
ご注意ください
指定されたファイルが見つかりません。とエラーが表示される、メディアが読み込めない、データへのアクセスが困難になった場合の取り扱いには十分注意してください。障害発生後の通電、市販ソフトによる誤使用によりデータ破損のご相談が増加しています。
このページはこんな人におすすめです。
・外付けHDDに保存しているデータを見れるようにしたい。
・指定されたファイルが見つかりません。のエラーを解消したい。
WindowsOSでフォルダやファイルをコピーしたときに発生する事があるエラー「指定されたファイルが見つかりません。」が表示されてしまった場合の復旧方法や対処方法を紹介していきたいと思います。
指定されたファイルが見つかりませんと表示される原因
多くは「接続不良」によって表示されてしまうエラーですが、その他ではウイルスやマルウェア、システムファイルの破損、アプリケーションのエラーや、アプリケーションの起動に必要なファイルが破損しているなどが考えられます。
しかし指定されたファイルが見つかりませんというエラーが表示される原因は特定が難しいのが現状で上記で挙げた以外でも様々な理由で表示されてしまう事があるのです。
指定されたファイルが見つかりません。からの復旧方法
復旧方法はいろいろありますが、まずは接続不良を疑いましょう。エラーが表示されてしまうメディアが外付けハードディスクなどのUSBケーブルを使用して接続するタイプのものであれば、USBコネクタ部分の掃除、ケーブルを別ものもに変えてみる・新しいものを購入して接続を行う等があります。
もしウイルスやマルウエア感染が考えられる場合には駆除ソフトなどを使用して対処してみましょう。
大体はこの接続不良とウイルスやマルウエア対策でエラーが表示されなくなる事が多いですが、上記二つを試してもエラーが表示される場合には以下の方法を試してみてください。
Windowsのアップデート
ウインドウズのアップデートが最新でない場合にもエラーが出てしまう可能性があります。一度アップデートが最新の状態であるか確認してみましょう。
アップデートが最新かを確認する方法は「設定」→「更新とセキュリティ」へアクセスします。
アクセス後「更新プログラムのチェック」と表示されているのでクリックしてみます。
表示が最新の状態と表示されればアップデートの必要はありませんので、別の方法を試してみましょう。
ドライバの再インストール
デバイスの管理から一度ドライバを削除し、再インストールしてみましょう。ドライバが破損していたり、最新のドライバではない時にもエラーが出る事があるので一度試してみましょう。
まずは「デバイスマネージャー」へアクセスを行います。
デバイスマネージャーが開いたら「ディスクドライブ」を探してみましょう。
ディスクドライブを開くと表示されているものが現在認識されているメディアになるので、画像のように右クリックし、ドライバの更新や再インストールを行ってみましょう。
場合によっては再起動が必要になる場合がありますので、ファイルなどが開いている場合はしっかりと保存しておきましょう。
レジストリキーの書き換え
レジストリエディアを使用して値を書き換える作業です。
まずはレジストリエディタを使用起動します。Windowsボタン+Rでファイル名を指定して実行ウインドウが表示されるのでそこに「regedit」と入力します。
エディタが起動したら「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion」へ移動しましょう。
赤線部分に入力するだけで簡単に移動が可能です。
移動できたら「RunOnce」を探します。
エラーが出る場合はRunOnceが無い事が多いので、右クリックして新しいRunOnceを作成しパソコンを再起動してみましょう。
しかし、この方法はレジストリの書き換えを行う事になり、こういった操作になれていない場合は必ずバックアップを作成しておきましょう。パソコンが起動しなくなってしまう可能性もありますので実行する場合は自己責任で行ってください。
ファイルの修復
コマンドプロンプトを使用してファイルの修復を試みる作業です。
この作業は正常なファイルやフォルダもさらに消失してしまう可能性があるのでバックアップは必ず取りましょう。
ファイルの修復方法などは「パラメーターが間違っています。」エラー表示された外付けHDDのデータ復元方法で紹介していますので参考にしてみてください。
しかし、このチェックディスクは正常なファイルもエラーとしてWindowsが認識し「.chk」というファイルに置き換えてしまう事があり、破損などが拡大してしまう可能性がありますので十分に注意してから修復を行ってください。
メディアのフォーマット
メディアのシステム情報が破損している事でエラーが出る可能性があり、フォーマット(初期化)する事でエラーが改善される可能性があります。
しかし、フォーマットは最終手段で、保存していたデータは全て消えてしまうのでデータが必要でない場合に限りフォーマットする事をお勧めします。
指定されたファイルが見つかりません。から復旧できない場合
今回紹介した方法で復旧ができない場合には、弊社のような専門業者に一度診断してみるのも一つの方法です。
一度エラーが発生してしまったメディアはフォーマットを行ってもエラーが出続けてしまう可能性が非常に高く、実は通電を行う度に障害状況が悪化してしまう可能性がとても高いです。
メディアに保存しているデータが大事であればあるほど、一度プロに調査してどういった状況なのかを確認し、今後の対処方法を決めるのが最善の策なのかもしれません。
また下記動画な様なカチカチ、カッコンカッコン、ピーピーなどの異音や電子音が発生している場合は通電を控えてください。
データ復旧事例は多数御座いますので、成功事例をご参考にどうぞ。
エラー表示関連の対処法
弊社でご依頼が多いHDD一覧
指定されたファイルが見つかりません。とエラー表示されるハードディスクからデータ復旧が可能だった成功事例とその他の事例をメーカー、型番毎に紹介していますのでお困りの方はご参考にどうぞ。
※リンク先は一部の成功事例を紹介させていただいております。
- HD-TDA6U3
- HD-TDA4U3
- HD-LS1.0TU2C
- HD-LS2.0TU2C
- HD-LC1.0U3-BK
- HD-LC1.0U3-WH
- HD-LC2.0U3-BK
- HD-LC2.0U3-WH
- HD-LC3.0U3-BK
- HD-LC3.0U3-WH
- HD-LC4.0U3-BK
- HD-CL500U2/N
- HD-CL1.0TU2/N
- HD-CL1.5TU2/N
- HD-CL2.0TU2/N
- HD-LB1.0TU3-BKC
- HD-LB1.0TU3-WHC
- HD-LB2.0TU3-BKC
- HD-LB2.0TU3-WHC
- HD-CB500U2
- HD-CB500U2-WH
- HD-CB1.0TU2
- HD-CB1.0TU2-WH
- HD-CB1.5TU2
- HD-CB1.5TU2-WH
- HD-CB2.0TU2
- HD-CB2.0TU2-WH
- HD-PCT1TU3-BB
- HD-PCT1TU3-BW
- HD-PCT1TU3-BBJ
- HD-PCT1TU3-BWJ
- HD-PV320U2-BK/N
- HD-PV500U2-BK/N
- LS-H250GL
- LS-H320GL
- LS-H500GL
- LS-H640GL
- LS-H1.0TGL
- LS-V500L
- LS-V1.0TL
- LS-V1.0TLJ
- LS-V1.5TL
- LS-V2.0TL
- LS-V2.0TLJ
- LS-V3.0TL
- LS-V3.0TLJ
- LS-V4.0TLJ
- LS-WX1.0TL/R1
- LS-WX2.0TL/R1
- LS-WX3.0TL/R1
- LS-WX4.0TL/R1
- LS-WX6.0TL/R1
- LS-WX1.0TL/R1J
- LS-WX2.0TL/R1J
- LS-WX4.0TL/R1J
- LS-WX6.0TL/R1J
- LS-WX8.0TL/R1J
- LS210D0301G
- LS210D0201G
- HD-NRLD2.0
- HD-LDS4.0U3
- HD-EDS4U3-BC
- HD-PCG1.0U3
- HD-NRLD8.0U3
- HD-W500IU2/R1/RAID1
- HD-W2.0TIU2/R1/RAID1
- TS-I4.0TGL/R5/RAID5
- LS-WH2.0TGL/R1/RAID0
- LS420D0602/RAID0
- CS-WV2.0/R1/RAID0
- LS-W2.0TGL/R1/RAID1
- TS-RH4.0TGL/R5/RAID5
- LS-WV2.0TL/R1/RAID0
- HD-WL2TU3/R1/RAID1
- TS-H1.0TGL/R5/RAID5
- LS-WH2.0TGL/R1/RAID1
- TS-WX2.0TL/R1/RAID0
- TS-WX1.0TL/R1/RAID1
- LS-WV2.0TL/RF/RAID1
- LS-WV2.0TL/R1/RAID1
- LS-WSX1.0L/R1WHJ/RAID1
- LS-W1.5TGL/R1/RAID0
- LS-Q2.0TL/R5/RAID5
- HD-W1.0TIU2/R1/RAID1
- TS-H2.0TGL/R5/RAID5
- LS-WX4.0TL/R1J/RAID0
- TS-WVH2.0TL/R1/RAID1
- CS-WV4.0/R1/RAID1
- LS-QV2.0TL/1D/RAID5
- HDCL-U1.0K
- HDCL-U2.0K
- HDCL-U3.0K
- HDPC-UT500WB
- HDPC-UT1.0WB
- HDPC-UT500RB
- HDPC-UT1.0RB
- HDPC-UT500SB
- HDPC-UT1.0SB
- HDPC-UT500KB
- HDPC-UT1.0KB
- HDPC-UT500BRB
- HDPC-UT1.0BRB
- HDCR-U500
- HDCR-U1.0
- HDCR-U1.5
- HDCR-U2.0
- HDCR-U500K
- HDCR-U1.0K
- HDCR-U1.5K
- HDPC-AU500KB
- HDPC-AU750KB
- HDPC-AU1.0KB
- HDPC-AU500B
- HDPC-AU750B
- HDPC-AU1.0B
- HDPC-AU500BRB
- HDPC-AU750BRB
- HDPC-AU1.0BRB
- HDPC-AU500BLB
- HDPC-AU1.0BLB
- HDPC-AU500RB
- HDPC-AU1.0RB
- HDC-U160
- HDC-U250
- HDC-U300
- HDC-U320
- HDC-U400
- HDC-U500
- HDE-U1.0J
- HDE-U2.0J
- HDPD-AUT500WB
- HDPD-AUT1.0WB
- HDPD-AUT2.0WB
- HDPD-AUT500W
- HDPD-AUT1.0W
- HDPD-AUT2.0W
- HDPD-AUT500KB
- HDPD-AUT1.0KB
- HDPD-AUT2.0KB
- HDPD-AUT500K
- HDPD-AUT1.0K
- HDPD-AUT2.0K
- HDL2-AH2.0
- HDL2-AH2.0
- HDL2-AH4.0
- HDL2-AH6.0
- HDC-EU1.0K
- HDC-EU2.0K
- HDCZ-UTL4KB
- HDC-EU1.0K
- HDL2-AH4.0
- HDS2-UTX6
- HDL2-AH6.0/RAID1
- HDL-XV8W/RAID5
- HDL-XV4W/RAID6
- HD-QL8TU3/R5J/RAID5
- HDL2-S2.0/RAID1
- HDL-GT4.0/RAID5
- HDL2-G2.0/RAID0
- HDL-GW500U/RAID0
- HDL-XR4.0/RAID5
- HDL-XR2.0/RAID6
- HDL2-A4.0/E/RAID1
- HDL2-A4.0/RAID0
- HDL-GTR4.0/RAID5
- HDL2-G1.0/RAID1
- HDS2-UT6.0/RAID1
- HDL2-S4.0/RAID1
- 25M3
- TS1TSJ25M3S
- 25M3 TS2TSJ25M3S
- 35T3 TS8TSJ35T3
- 300 for Mac
- TS2TSJM300
- 200 for Mac TS2TSJM200
- 25H3 TS4TSJ25H3P
- 25H3 TS1TSJ25H3B
- 25M3
- TS500GSJ25M3
- 25H3 TS2TSJ25H3B
- 25H3P TS1TSJ25H3P
- 25C3 TS2TSJ25C3N
- 25H3P TS2TSJ25H3P
- 25MC TS1TSJ25MC
- 35T3 TS3TSJ35T3
- 25D3 TS1TSJ25D3
- 25C3 TS1TSJ25C3N
- 100 for Mac TS2TSJM100
- 25M3 TS2TSJ25M3
- 25M3 TS1TSJ25M3
- 25H3 TS3TSJ25H3P
- 35T3 TS4TSJ35T3
- 25M3 TS1TSJ25M3G
- 25A3 TS1TSJ25A3W
- 25D2 TS500GSJ25D2
- 25M3 TS2TSJ25M3G
- 25MC TS2TSJ25MC
- 25A3 TS2TSJ25A3K
- 25A3 TS2TSJ25A3W
- 25P TS750GSJ25P
- 25M3 TS1TSJ25M3B
- 25A3 TS1TSJ25A3K
- 25M3 TS1TSJ25M3E
- SGP-NX005UBK
- SGP-NX005UWH
- SGP-NX010UBK
- SGP-NX010UWH
- SGP-NX020UBK
- SGP-TV005BK
- SGP-TV010BK
- SGD-NX020UBK
- SGD-NX020UWH
- SGD-NX030UBK
- SGD-NX030UWH
- SGD-NX040UBK
- SGD-TV020BK
- SGD-TV030BK
- SGP-EX005UBK
- SGP-EX010UBK
- SGP-EX020UBK
- SGP-BP005UBK
- SGP-BP005USV
- SGP-BP010UBK
- SGP-BP010USV
- SGD-EX020UBK
- SGD-EX030UBK
- SGD-EX040UBK
- SGD-BP020UBK
- SGD-BP030UBK
- ELD-ERH020UWH
- ELP-EKT020UBK
- ELP-ZS005UBK
- ELP-ZS005UWH
- ELP-ZS010UBK
- ELP-ZS010URD
- ELP-ZS010UWH
- ELP-ZS010USV
- ELP-ZS010UGD
- ELP-ZS010UBU
- ELD-ERT010UBK
- ELD-ERT030UBK
- ELD-ERT020UBK
- ELD-QEN030UBK
- ELD-QEN010UBK
- ELD-QEN040UBK
- ELP-RED005UWH
- ELP-RED010UWH
- ELP-RED020UWH
- ELP-DB010UBR
- ELP-ETV010UBK
- ELP-ETV010UWH
- ELP-ETV005UBK
- ELP-QEN010UBK
- ELP-CED005UBK
- ELP-CED010UBK
- ELP-EKT005UBK
- ELP-EKT010UBK
- ELD-ETV010UBK
- ELD-ETV010UWH
- ELD-ETV030UBK
- ELP-ETV020UBK
- ELP-FED010UBK
- ELP-EDV005UBK
- ELP-EDV010UBK
- ELP-ERT010UBK
- ELD-CED010UBK
- ELD-CED020UBK
- ELP-EEN005UBK