トップ回答者
AssemblyInfo.cppですが

質問
回答
-
アセンブリに適用できるバージョン用の属性は 3 つあります。AssemblyVersion 属性、AssemblyFileVersion 属性、AssemblyInformationalVersion 属性です。
このうち、AssemblyFileVersion と AssemblyInformationalVersion は該当アセンブリのカスタム属性として格納されています。
AssemblyInformationalVersion に関しては、実行ファイルのプロパティ→詳細→製品バージョンが空だった場合に System::Windows::Forms::Application::ProductVersion で取得できるバージョンに影響します。
AssemblyFileVersion の方は特に表に出てくることは無いように見えます。
AssemblyVersion は、アセンブリのバージョン管理に使われる重要な情報であり、カスタム属性ではなくアセンブリ名の一部として使用されています。
System::Console::WriteLine(Syste::Object::typeid->AssemblyQualifiedName);
などとやると型の完全修飾型名が表示されますが、後半のアセンブリ名にバージョン情報も格納されているのがわかります。
ただ、ファイルのプロパティとして Explorer から確認ってことはできないようです。
// Windows XP だとアセンブリバージョンとかプロパティに表示されてたような気がするんだけど……記憶違いだったかな。
C++/CLI の場合 .rc ファイルでファイルバージョンと製品バージョンを指定するため、これらの属性は使われないみたいですね。C# だと AssemblyFileVersion や AssemblyInformationalVersion を設定すれば実行ファイルのプロパティのファイルバージョンや製品バージョンも変更されるんですけど。
ファイルバージョンや製品バージョンを設定するのに必要である(まあ AssemblyVersion で代用できるんですが)C# と異なり、C++/CLI の場合 AssemblyFileVersion 及び AssemblyInformationalVersion は影が薄い存在になるでしょう。
反面、AssemblyVersion はファイルのプロパティにこそ出てきませんが、厳密名を付けて運用されるアセンブリでは重要な意味を持ちます。実行ファイルの作成者が想定していないバージョンの dll のロードを行わないようにする、といったことが可能です。
バージョン以外の属性も、Assembly... という名前の属性は基本的に .rc の方で定義するもののため AssemblyFileVersion と同程度の意味しかないでしょう。
ComVisible 属性や CLSCompliant 属性は独自の意味があるものなので、これらは必要に応じて定義します。まああまり普段気にするものではないでしょうけど。- 回答としてマーク paosan 2009年7月10日 9:18
すべての返信
-
アセンブリに適用できるバージョン用の属性は 3 つあります。AssemblyVersion 属性、AssemblyFileVersion 属性、AssemblyInformationalVersion 属性です。
このうち、AssemblyFileVersion と AssemblyInformationalVersion は該当アセンブリのカスタム属性として格納されています。
AssemblyInformationalVersion に関しては、実行ファイルのプロパティ→詳細→製品バージョンが空だった場合に System::Windows::Forms::Application::ProductVersion で取得できるバージョンに影響します。
AssemblyFileVersion の方は特に表に出てくることは無いように見えます。
AssemblyVersion は、アセンブリのバージョン管理に使われる重要な情報であり、カスタム属性ではなくアセンブリ名の一部として使用されています。
System::Console::WriteLine(Syste::Object::typeid->AssemblyQualifiedName);
などとやると型の完全修飾型名が表示されますが、後半のアセンブリ名にバージョン情報も格納されているのがわかります。
ただ、ファイルのプロパティとして Explorer から確認ってことはできないようです。
// Windows XP だとアセンブリバージョンとかプロパティに表示されてたような気がするんだけど……記憶違いだったかな。
C++/CLI の場合 .rc ファイルでファイルバージョンと製品バージョンを指定するため、これらの属性は使われないみたいですね。C# だと AssemblyFileVersion や AssemblyInformationalVersion を設定すれば実行ファイルのプロパティのファイルバージョンや製品バージョンも変更されるんですけど。
ファイルバージョンや製品バージョンを設定するのに必要である(まあ AssemblyVersion で代用できるんですが)C# と異なり、C++/CLI の場合 AssemblyFileVersion 及び AssemblyInformationalVersion は影が薄い存在になるでしょう。
反面、AssemblyVersion はファイルのプロパティにこそ出てきませんが、厳密名を付けて運用されるアセンブリでは重要な意味を持ちます。実行ファイルの作成者が想定していないバージョンの dll のロードを行わないようにする、といったことが可能です。
バージョン以外の属性も、Assembly... という名前の属性は基本的に .rc の方で定義するもののため AssemblyFileVersion と同程度の意味しかないでしょう。
ComVisible 属性や CLSCompliant 属性は独自の意味があるものなので、これらは必要に応じて定義します。まああまり普段気にするものではないでしょうけど。- 回答としてマーク paosan 2009年7月10日 9:18