9/26/2016

[note] Win10アップグレード後のVisual Studio 2005起動時エラーの修正について

今更もいいところの話ですけれども、Windows10絡みのワークアラウンドメモ。

大分前に作成したアプリケーションを改修する必要がありまして、当該プロジェクトの開発環境がWindows10にアップグレードしたPC上のVisual Studio 2005(VS2005)で、アップグレード以来動作検証をしていなかった事を思い出し、大丈夫だろうかと不安に思いながら起動したら、案の定エラーが出まして。慌てて対処する羽目になったのです。

具体的な症状としては、VS2005のIDE起動時に下記のようなエラーメッセージが出るようになるのです。エラーを無視すれば一応起動はするものの、他にもダイアログエディタ周り等にもエラーが出て動かなくなるので、流石にこのままでは使えません。
メッセージによれば、C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlbが無く、再インストールせよ、というのです。フォルダを見てみると確かにありません。v2.0.50727のフォルダは存在するところからして、元々は入っていたけれども、おそらくはアップグレードに伴い削除されたという事なのでしょう。

で、右往左往しつつざっと調べた結果、これは、VS2005では.NETの2.0が使用されているのですけれども、Windows10の.NETは4.6がデフォルトで、しかもアップグレードに伴い2.0を含むそれ以前のバージョンが削除されてしまうために起こる現象らしいと。従って、.NET2.0のランタイムを入れれば解決する、というわけです。

ただ、ランタイムを入れるにあたって注意すべき点がいくつか。まず、.NET2.0は.NET3.5に統合されているので、単体で.NET2.0のランタイムだけを導入することは原則出来ず、.NET3.5を入れる必要があるという事。そして、.NET3.5は従来からその位置付けが若干変更になり、外部モジュールではなく、IEと同類のWindowsのオプション機能として統合されているため、そのインストールは従来のような外部インストーラを使うのではなく、コントロールパネルの[Windowsの機能の有効化または無効化]から行うものである、という事。(インストーラからのインストールも可能なのかもしれませんが、試していないため可否不明)

いやもうそんな仕様変更気づくわけないし、そもそもこんな基盤部分のモジュールを勝手に無効にしないで欲しい、と愚痴の一つも吐きたくなるというものです。大体、元々.NETの旧バージョンを入れていたPCをアップグレードしたのだから、当然デフォルトで有効にしておくべきものだろうと。警告も注意も何もありませんでしたし、全く以って遺憾な限りです。

ともあれ。具体的な手順としては、[コントロールパネル]-[プログラムと機能]-[Windowsの機能の有効化または無効化]を起動すると、下記のようなダイアログが表示されます。この中の、.NET Framework 3.5(.NET 2.0および3.0を含む)にチェックを入れて[OK]、とこれだけ。モジュールのダウンロードとインストールが行われるのでしばらく待ちます。
 
.NET Framework 3.5の有効化完了後は、上記エラー画面で読み込み失敗となっていたファイルを含め、.NET2.0のランタイム関連のファイル群が復活しています。VS2005も元通り普通に起動するようになり、プロジェクトの改修作業も無事実施する事が出来たのでした。終わってみれば簡単な事でしたが、どうなることかと肝を冷やしましたし、Win8.1に戻すべきか本気で迷いました。とても心臓に悪いので、勘弁して頂きたい、と心から思います。ともあれ今回はこれでおしまい。やれやれです。

[関連記事 [note] Win10のAnniversary Update(1607)の適用とバックグラウンドタスク等の無効化]
[関連記事 [note] Win10メジャーアップデートの適用とCortanaの無効化][関連記事 [note] Win10のモニタOFFタイムアウト設定を無視する現象の修正方法]
[関連記事 [note] Win10アップグレードという名の地雷を踏み抜いてみました]