今日、久しぶりに昔作成したASP.NETのソリューションをVisual Studio 2017 Communityで開いた。
そのソリューションには、プロジェクトが20個くらいある。
- C#の自作ライブラリが数個
- C#のASP.NET WebFormサイトが数個
- C#のASP.NET MVCサイトが数個
- Chrome Extensionが数個
- C++の自作ライブラリ
などなど。
さて、その中でTypeScriptを使っているプロジェクトで以下のエラーメッセージが出る。
まあ、パス名はモザイクにする必要も無いのだが、何となくモザイクにしてみた。
Windows付属のペイントを使ってモザイクを簡単に掛けられるので興味ある人は別の記事で解説しているので参考にして頂きたい。
で、このエラーが意味不明だ。
重大度レベル エラー
多数の .js ファイルが含まれるため、言語サービスはプロジェクト
‘E:\Desktop\(パス名)\WebGengoForm.csproj’
に対して無効です。’tsconfig.json’ ファイルの ‘section’ セクションを使用してファイルを除外することを検討してください。
ワテの場合、最近ではJavaScriptは使わずに全てTypeScriptで書くようにしている。
今の場合には、ASP.NET WebFormサイト、ASP.NET MVCサイト、Chrome ExtensionでTypeScriptを使っているのだが、これら一連のプロジェクトで上記のエラーが出る。
この記事では、この意味不明なエラーの解決方法をメモしておく。
まあ、ワテにしか役に立たない備忘録である。
Visual Studio 2017 Communityのバージョンを確認
先日、VS2017のUpdateが出ていたので適応した。
その結果、今のバージョンは以下の通り。
Microsoft Visual Studio Community 2017
Version 15.2 (26430.12) Release
VisualStudio.15.Release/15.2.0+26430.12
Microsoft .NET Framework
Version 4.7.02046
キーワード
「多数の .js ファイルが含まれるため、言語サービスはプロジェクト」
で早速ネット検索してみると以下のページがヒットした。
Visual Studio 2017 15.9 リリース ノートVisualStudio2017v15.9の最新の機能および改善に関するリリースノート。VisualStudioでより良い計画、共同コーディング、すばやい出荷。Visual Studio 2017 (バージョン 15.2) の既知の問題
Last Update: 2017/05/31
おお、マイクロソフト社としても既知の問題として認識しているようだ。
その対策は以下の通り。
JavaScript IntelliSense が動作を停止する
問題:
JavaScript コードが 25 MB 以上のプロジェクトを開くと、”多数の .js ファイルが含まれるため、言語サービスはプロジェクトに対して無効です。 ‘tsconfig.json’ ファイルの ‘exclude’ セクションを使用してファイルを除外することを検討してください。” というエラーが表示されます。回避策:
プロジェクト ルートに tsconfig.json を追加します。コードは次のようになります。
{ "compilerOptions": { "allowJs": true, // These settings apply to .js files as well as .ts files "noEmit": true // Do not compile the JS (or TS) files in this project on build }, "exclude": [ "node_modules", // Don't include any JavaScript found under "node_modules" or "bower_components" "bower_components" ] }
Add additional folders with JavaScript code libraries. Another common one is Scripts/Office/1 if you’re using office-js.
引用元 https://www.visualstudio.com/ja-jp/news/releasenotes/vs2017-knownissues
早速この tsconfig.json ファイルを問題のプロジェクトに追加してみた。
ところか解決しない。
それで、しばらく試行錯誤して以下の二つの作業をしたら解決した。
追加で行った作業1- 除外フォルダを追加する
“exclude”: の部分に、除外したいフォルダを追加する。
例えばASP.NET WebFormプロジェクトの場合には、ScriptsフォルダにもJavaScriptファイルが保管されている。また、testと言うフォルダを自分で作成してその中にもJavaScriptファイルが沢山ある。
なので、それらのフォルダを追加してみた。
"exclude": [ "node_modules", // Don't include any JavaScript found under "node_modules" or "bower_components" "bower_components", "Scripts", "test" ]
こんな感じ。
この場合、例えば Scriptsの中にサブフォルダが有ったとしても、最上位のScriptsを登録しておくと、それらのサブフォルダの中のJavaScriptファイルは全部除外されるようだ。
なお、元々あった二つのフォルダ(node_modules, bower_components)は今の場合には無くても良い。
ところがこれでもまだエラーが出る。
追加で行った作業2 – ソリューションを開きなおす
それで、Visual Studioを一旦終了して、再びソリューションを開いてみた。
その結果、無事に、エラーが出なく無くなった。
そのキャプチャー画面は以下の通り。
ああ、スッキリ。
まあ、多少警告が出ているがそれは自分でも理由が分かっているので今回は無視。
まとめ
Microsoft Visual Studio Community 2017を
Version 15.2 (26430.12) Release
に上げたら、TypeScriptプロジェクトで以下のエラーが出た。
「多数の .js ファイルが含まれるため、言語サービスはプロジェクト・・・」
マイクロソフト社のサイトに記載されている方法に従って、’tsconfig.json’ ファイルを追加して、その中の ‘exclude’ セクションでJavaScriptファイルがあるフォルダを追加した。
さらにVisual Studioを一旦終了して、再び開くとエラーが解消した。
C#の本を読む
この二冊はアマゾンでも人気のある本だ。
でもワテはまだ読んでいない。理由は高いから買っていないから。
こう言う本を一冊買っておいて、通勤電車で読めば良いかも。
ちなみにポケットリファレンスの本は沢山あり、例えばこんなのもある。
まだ沢山あるので、一冊買って文字通りポケットに入れて持ち歩くと良いかも。
SQLポケットリファレンスは、自分の知らないSQL文のテクニックを覚えるには最適だ。
コメント