次の方法で共有


Visual Studio 2017 のインストール後に Visual Studio SDK の COM 参照でエラーとなる現象について

こんにちは、Visual Studio サポート チームです。

今回は Visual Studio 2017 のインストール後に、Visual Studio SDK のコンポーネントを COM 参照している Visual Studio アドイン プロジェクトや Visual Studio 拡張機能プロジェクトにおいて、参照エラーが発生する現象と対処方法についてご案内します。

なお、本現象は Visual Studio アドイン プロジェクトや Visual Studio 拡張機能プロジェクトの開発時に発生する可能性のある問題ですが、ビルド済みの既存のアドインや拡張機能をご利用いただく際に問題が生じることはありませんので、この点はご安心ください。

 

現象

Visual Studio 2017 のインストール後、以前のバージョンの Visual Studio 拡張機能のプロジェクトなどで、Visual Studio SDK のコンポーネントを COM 参照している場合に、下図のような参照エラーが発生します。

 

Visual Studio 2017 インストール前

pict1

Visual Studio 2017 インストール後

pict2

 

また、ビルド時に次のようなエラー メッセージが出力されます。

"タイプ ライブラリ "EnvDTE" のラッパー アセンブリが見つかりません。次のことを確認してください。(1) COM コンポーネントが正しく登録されている。(2) ターゲット プラットフォームのビットが COM コンポーネントと同じである。たとえば、COM コンポーネントが 32 ビットの場合、64 ビットのターゲット プラットフォームは使用できません。"

 

原因

Visual Studio 2015 以前のバージョンでは、EnvDTE をはじめとする Visual Studio SDK の COM コンポーネントについてはプライマリ相互運用アセンブリ (PIA) が登録されていました。これにより、Visual Studio SDK を COM 参照するプロジェクトは、実際には PIA を参照する動作となっていました。

一方、Visual Studio 2017 では、製品デザインの変更に伴い、Visual Studio SDK の PIA の登録は行われなくなっています。Visual Studio 2017 のインストール時に以前のバージョンの Visual Studio SDK の COM に関するレジストリは再登録されますが、この際、PIA のレジストリの再登録は行われません。

この動作により PIA の登録がなくなることから、Visual Studio SDK を COM 参照で利用しているプロジェクトでは参照エラーが発生します。

 

 

対処方法

Visual Studio SDKをCOM 参照で利用していたプロジェクトでは、対象のライブラリを .NET Framework のクラス ライブラリとして参照するように変更してください。

なお、Visual Studio SDK では COM 参照は PIA 経由となりますが、PIA として参照されるアセンブリと .NET Framework のクラス ライブラリとして参照するアセンブリは同一です。そのため、どちらの方法で参照した場合でも Visual Studio 拡張機能の動作に影響が生じることはありませんのでご安心ください。

参照設定手順
(1) [ソリューション エクスプローラー] のツリーで [参照設定] のノードを展開します。

(2) [参照設定] のノードで右クリック メニューを開き、[参照の追加] を選択します。

(3) [参照の追加] ダイアログで [.NET] のタブを選択し、"EnvDTE"、"EvDTE100"、"EnvDTE80"、"EnvDTE90" を選択して [OK] ボタンを押下します。

pict3

(4) [ソリューション エクスプローラー] のツリーで、(3) の手順で [参照設定] のノード配下に追加された各アセンブリを選択し、[プロパティ] ウィンドウから [相互運用機能型の埋め込み] を [False] に変更してください。

(5) 変更後、ビルドが正常に完了することと、念のため Visual Studio 拡張機能が正常に動作することを確認してください。

※ (4) の手順は必須ではありませんが、不要な相互運用機能型の情報がアセンブリに埋め込まれることとなるため、変更することをお勧めします。

 

 

参考情報

Visual Studio 2017 の製品デザインの変更に伴い、既存の Visual Studio 拡張機能に影響が生じる可能性がある内容につきましては、弊社の下記の公開ドキュメントでご案内しています。英文のみのご案内となりご不便をおかけしますが、Visual Studio 拡張機能の開発者各位におかれましては、是非一度ご覧いただけますと幸いです。

Changes in Visual Studio 2017 extensibility
/en-us/visualstudio/extensibility/breaking-changes-2017