ワテの場合、Visual Studio 2013, Visual Studio 2015 の二つを使っている。
(最近は、VS2017だ。あるいは近々出る予定のVS2019も使ってみたい。)
メインに使っているのは2013のほうだがそろそろ2015に移行しようかなと考えている。
Visual Studioをインストールした後、各種の追加機能をインストールして来た。
当記事では、そのVisual Studioを使っていて体験した原因不明のエラーと解決方法を紹介したい。
では、本題に入ろう。
Visual Studioには各種の無料機能を追加できる
➜ 拡張機能と更新プログラム
➜ オンライン、更新プログラム
や
➜ Nuget パッケージマネージャ
➜ ソリューションのNugetパッケージの管理
などの機能を使うとVisual Studioに各種の追加機能、更新プログラムをインストール出来る。
また、
という公式サイトにも各種の便利パッケージが有る。
中には、両者で同じ物が登録してあったり、同じでもバージョンが異なるなどの場合もあるが、兎に角沢山の便利機能を無料でVisual Studioに追加できる。
Visual Studioはとても安定している
さて、そのVisual Studioであるが、Windows 7(x64) の環境でこの数年使っているのだが、上記のサイトや機能を使って、更新プログラムのインストール、各種のパッケージなどを多数インストールやアンインストールを繰り返してきた。
ワテの印象としては、Visual Studioはとても安定している。
この数年使っているが、プロジェクトの作成やビルドなどにおいても非常に安定していて、原因不明のエラーなどが発生した事は滅多にない。
物凄く多機能にもかかわらず、この抜群の安定性は心強い。
良く出来ているプログラムだと思う。
File Nestingを入れた頃から原因不明エラー発生
さて、先日こんな無料拡張ソフトを見つけた。
上記のVisual Studioのサイトからダウンロードして自動でVSに組み込める。
何が出来るかと言うと、ソリューションエクスプローラー(Windowsのフォルダエクスプローラーみたいなやつ)において、関連するファイルをまとめて表示出来る機能だ。
下図のような感じ。
つまり、例えば
bootstrap.js
bootstrap.min.js
の二つは親戚関係にあるので、それらの表示を◢アイコンのクリックで展開したり、折り畳んだり出来るのだ。
沢山のファイルを扱っている場合には表示をスッキリさせる事が出来るので便利な機能だ。
使い方は簡単で、右クリックメニューにFile Nestingの項目が出て来るので、それで何をどれに関連付るのかを指定するだけで良い。
ちなみに同じくVSの有名な無料拡張機能Web Essentialを入れていると、このFile Nestingの機能を入れていなくても、一部のWEB関連ファイル(拡張子 js, css, scss, htmlなど)に対しては、この機能がデフォルトで入っている(たぶん両者の作者が同じ人なのが原因か)。
つまり、自動的にネスト表示が働いて、
original.js
original.min.js
こんなふうになる。
でも、このFile Nestingの機能を使うと全く関係ないファイルに他のファイルを関連付けて展開、折り畳み表示が可能になる(下図)
つまり、一つの .cs ファイルがあり、そのファイルが大きくなったのでサブファイル群に分割したような場合に、上記のようにFile Nestingの関連を付けて置くとそれらの関係を分かり易く表示出来るのだ。
この機能を使わない場合には、例えばフォルダごとに分割して管理するなどの方式を使っても良い。
ワテも早速このFile Nestingの機能を入れて使っているのだが、それと関係あるのか無いのか分からないのだが、先日、こんなエラーメッセージがVS2013の起動時に出た。
制約 ContractName エラーメッセージ
起動時にエラーが出るなんて言う経験は滅多にない。この数年で、記憶が無いくらいなので、たぶん過去に1,2回くらいかな。
そのエラーメッセージ
制約
ContractName
Microsoft.VisualStudio.Text.ITextDocumentFactoryService
RequiredTypeIdentity
Microsoft.VisualStudio.Text.ITextDocumentFactoryServiceに一致するエクスポートが見つかりませんでした
う~ん、なんのこっちゃさっぱり分からん英語からの直訳風エラーメッセージだ。
その画面が↓
さっぱり分からない場合は検索だ。
Visual Studioなんて利用者が多いので、ワテが世界の誰よりも初めて遭遇するエラーなんていうのはまあ有り得ない。誰かが既に経験済なものばかりだ。
ネット検索してエラーの原因を探る
このエラーに関しても、直ぐに見つかった。
ワテが良く頼りにしているStack Overflowだ。
Error message “No exports were found that match the constraint contract name”
このサイトの情報によると、以下のフォルダを削除あるいはリネームしておけば良いらしい。
ワテの場合はVS2013なので赤字部分のフォルダを仮の名前に変えてみた。
バージョンごとのVisual Studio Component Model Cacheの場所
●Visual Studio 2010
%AppData%\Local\Microsoft\VisualStudio\11.0\ComponentModelCache %AppData%\Local\Microsoft\VPDExpress\11.0\ComponentModelCache
●Visual Studio 2013
%AppData%\Local\Microsoft\VisualStudio\12.0\ComponentModelCache
C:\Users\wate\AppData\Local\Microsoft\VisualStudio\12.0\ComponentModelCache
●Visual Studio 2015
%AppData%\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
手作業でVS関連のフォルダを削除や名前変更しても良いのかなという不安もあったが、まあもしそれで何か別の問題が出たら名前を戻せばいいわけだし、信頼できるStackOverflowの情報だから信用してやってみたら、エラー解消!
ああ、スッキリ。
まとめ
結論としては、このエラーが何が原因で出たのかは不明。
直近で行った操作は、File Nestingをインストールした程度。
ちょっと気になるので今はFile Nestingは無効化している。
でも不思議な事にFile Nesting設定したファイル群は、無効化してもネスト表示されている。
なのでVisual StudioはデフォルトでこのNesting表示機能を持っているのかな。たぶん。
それでこのFile Nesting Extensionは、そのネスト情報を保持しているファイル?かどこかに自前のネスト設定を追加する機能のようだ。
なのでFile Nesting機能を無効化しても、既に追加済のネスト情報に従ってVSがネスト表示を行っている感じ。
以上、全部推測です。
兎に角、Visual Studio Community 2015は無料なのでお勧めです。
従来のProfessional版(定価20万円くらい?)に相当する機能が無料なので、これは使わな損と言うやつだ。
Visual Studio関連の本を読む
電話で質問出来るようなのでお勧めだ。
ワテだったら何回でも電話してしまいそうだが、回数制限はあるのかな?
未確認だ。
コメント