出力を入力へ

プログラミングに関する自分が考えた事を中心にまとめます

Visual Studioにおけるビルド・リビルド・クリーン

最近、WindowsにてOfficeアドイン開発をしていた時に気付いたこと。
一般に予測される挙動とちがったのでメモ。


おそらく一般的に予測されるビルド、リビルド、クリーンとは以下の感じだと思う:

ビルド:出力ファイルを生成する
リビルド:クリーンを実行後にビルドする
クリーン:出力ファイルを削除する

これはMSDNドキュメントにも記載がある。
Visual Studio でのプロジェクトとソリューションのビルドおよびクリーン
linuxでいえばビルド、クリーンはそれぞれmake、make cleanに相当すると予測される。

ビルドについて

しかし、別のMSDNドキュメントページによると、ビルドは以下の通り:

プロジェクトをビルドすると、Visual Studio によって開発用コンピューター上にレジストリ エントリが作成されるので...

アプリケーション レベルのアドインのレジストリ エントリ

つまり、ビルドすると関連するレジストリエントリが登録され、
出力ファイル以外にも開発環境を更新する
(実行時に更新されるのではない)。
なにも知らずにビルドして放置するとゴミがレジストリに残るので注意。

クリーンについて

ビルド時に作成されたレジストリエントリを削除するには
クリーンを実行すればよいというのは予想通り
(ただし、これはMSDNドキュメントには記載なし?VisualStudio2010にて動作確認済)。

しかし、出力ファイルを削除するはずが、削除されずに残るファイルがある。
確認してみると、プロジェクトファイルとコンポーネントファイルは
削除されないらしい。

...残されてプロジェクト ファイルとコンポーネント ファイルを中間ファイルと出力ファイルは、ビルドできます。

Visual Studio でのプロジェクトとソリューションのビルドおよびクリーン

機械翻訳なのか、日本語が理解できないが、原文を見れば意図通り。

With only the project and component files left, ...

Building and Cleaning Projects and Solutions in Visual Studio

その他

上記のプロジェクトファイル、コンポーネントファイルとは何かというと

各プロジェクトに固有の情報を格納します...

プロジェクト ファイルとソリューション ファイル

.NET Framework では、コンポーネントとは System.ComponentModel.IComponent インターフェイスを実装するクラスまたは IComponent を実装するクラスから直接または間接的に派生したクラスを意味します。プログラミングでは、コンポーネントという用語は、一般的に、再利用可能で、ほかのオブジェクトと対話できるオブジェクトに対して使われます。.NET Framework コンポーネントは、上に述べた一般的な要件を満たすだけでなく、外部リソースの制御やデザイン時サポートなどの機能を備えています。

クラス、コンポーネント、コントロール

なんとなくはわかるがよくわからん。
あと、MSDNライブラリは機械翻訳の表示があったりなかったり、
別バージョンへのリンクがあったりなかったりとよくわからん。