参照側プログラムのリビルドが必要となるような DLL の変更について

こんにちは、Visual Studio サポート チームです。 ほとんどの .NET Framework アプリケーション開発プロジェクトでは、プログラムを再利用できるよう、ある程度の機能をひとまとまりにしたクラス ライブラリ (DLL) を開発、参照されているかと思います。今回は、そのような DLL に変更を加えた際に、DLL を参照するプログラム側でも再ビルドが必要になるケースについてご案内します。 DLL に実装されたメソッドの名前や引数などに変更が生じた場合、その DLL を参照するプログラム側でも変更内容に合わせてメソッドの呼び出し方を修正し、リビルドする必要があることはイメージしやすいかと思います。このような変更以外で、一見するとリビルドは必要ないように思われる場合でも、DLL を参照するプログラム側でリビルドが必要な場合があります。 DLL を参照する側のプログラムのリビルドの必要性については、プロジェクトの工数にも影響する重要なトピックですので、本稿が少しでもお役に立てましたら幸いです。 ※ 以下にご案内する内容の一部は、製品の仕様として公開させていただいているものではなく、あくまで、現時点の検証に基づくものであり、予告なく変更される可能性もあります。また、リビルドが必要なすべてのケースを網羅していることを保証するものではありません。何卒、ご了承ください。   DLL の変更時に参照元のプログラムも再ビルドが必要になるケース DLL 側で以下の 2 パターンの変更が行われた場合、変更された DLL を参照しなおして参照側プログラムもリビルドする必要があります。特に (1) の定数、デフォルト引数、および名前付き引数の追加/変更については、参照側のリビルドは不要と考えられがちですのでご注意ください。   (1) DLL と参照側プログラムの接点部分に変更が生じた場合 DLL に定義された以下の情報は、参照側プログラムのビルド時に参照側にも取り込まれます。このため、DLL 側でこれらに変更が生じた場合、参照側プログラムでも、新しい DLL を参照しなおしてリビルドする必要があります。   ・定数の値 ・列挙型 (型の名前、要素の名前、要素の順番、要素の挿入・削除、など) ・クラス、構造体、インターフェイス (型の名前、要素 (フィールド・プロパティ・メソッド) の名前、要素の削除、メソッドの戻り値の型・デフォルト引数・名前付き引数、アクセス修飾子、など) ・属性 (InternalsVisibleTo、Obsolete、Conditional、etc.) の有無  …


Visual Studio 2015 Update 3 がインストールされた環境で VSIX パッケージのアップグレード インストールに失敗する問題について

こんにちは。Visual Studio サポート チームです。 今回は、先日リリースされた Visual Studio 2015 Update 3 で確認された VSIX パッケージのインストールに関する問題と対処方法についてご案内します。 (追記 : 2016 年 9 月 15 日) 本問題の修正を含む更新プログラムが米国時間の 2016 年 9 月 14 日にリリースされています。 更新プログラムは本稿末尾に記載のある MSDN ライブラリのドキュメント内の “manual download and installation” から入手してご利用いただけます。   現象 Visual Studio 2015 Update 3 がインストールされた環境で、VSIX パッケージをアップグレード インストールしようとすると以下のようなエラーが発生し、インストールに失敗する場合があります。     原因 本エラーは Visual Studio 2015 Update 3…


Visual C++ 2015 アプリケーションでの CRT ローカル配置について

こんにちは。Visual Studio サポート チームです。 8 月 2 日に Windows 10 の大型アップデートである Anniversary Update がリリースされ、本格的に Windows 10 の導入を進められている企業様も多いかと思います。 今回は、Windows 10 にも関係する Visual C++ 2015 のランタイムの変更点についてご紹介します。 ユニバーサル C ランタイム ライブラリについて Visual C++ 2015 では C ランタイム (CRT) ライブラリが大きくリファクタリングされ、Universal CRT (UCRT) とそれ以外のランタイム (vcruntime140.dll など) の 2 種類で構成されています。 UCRT には広く利用される標準的な C ランタイム ライブラリのコードが実装されており、安定した API を備えているため Visual Studio のリリースごとにバージョン変更する必要のない、Windows OS…