none
「バージョン エディタ」、何で使ったら、バージョンは反映されないの? RRS feed

  • 質問

  • C++で生成される「DLL」ファイルに、ファイル バージョンを変えたいのですが、以下の方法:
    Visual Studio 開発環境でこのリンカ オプションを設定するには
    プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「Visual C++ プロジェクトのプロパティの設定」を参照してください。

    [リンカ] フォルダをクリックします。

    [全般] プロパティ ページをクリックします。

    [バージョン] プロパティを変更します。→「2.1.05」に編集する

    以上の設定が終わったら、コンパイルするが、でも、生成されたDLLファイルのプロパティに
    「バージョン情報」
    ファイルバージョン:1.0.03
    ですが、
    なんで、僕は設定された「2.1.05]は反映されていないの?

    (ちなみに、環境はXP、EXPRESS2008)

    どうぞ教授いただきたいのです、
    よろしくお願いいたします。

    2010年2月5日 6:44

回答

  • C++のプロジェクトの種類にもよりますが、基本はリソースファイル(rcという拡張子のファイル)にあるバージョンリソース(VERSIONINFOブロック)を編集します。
    Express Edition の場合は、リソースを編集するためのGUIエディタがありませんので、テキストモードで開かれると思いますが、見ればわかる構造なので修正はそれほど難しくないと思います。

    もし、C++/CLIのプロジェクトであれば、AssemblyInfo.cpp というファイルがあると思いますので、そこにある属性を修正する形になります。
    .NET アセンブリの場合は、アセンブリバージョンとファイルバージョンの両方を管理する必要があるので、必要に応じて修正することになります。

    リンカのタブにあるバージョン情報はイメージヘッダーのバージョンとなりますので通常は指定しません(空のまま)。
    こちらは、PEヘッダーのイメージバージョンを指定する部分ですので、よほど特殊な状況じゃない限り、値は設定せず空にしておく必要があります。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク 急急急 2010年2月5日 8:49
    2010年2月5日 8:28

すべての返信

  • C++のプロジェクトの種類にもよりますが、基本はリソースファイル(rcという拡張子のファイル)にあるバージョンリソース(VERSIONINFOブロック)を編集します。
    Express Edition の場合は、リソースを編集するためのGUIエディタがありませんので、テキストモードで開かれると思いますが、見ればわかる構造なので修正はそれほど難しくないと思います。

    もし、C++/CLIのプロジェクトであれば、AssemblyInfo.cpp というファイルがあると思いますので、そこにある属性を修正する形になります。
    .NET アセンブリの場合は、アセンブリバージョンとファイルバージョンの両方を管理する必要があるので、必要に応じて修正することになります。

    リンカのタブにあるバージョン情報はイメージヘッダーのバージョンとなりますので通常は指定しません(空のまま)。
    こちらは、PEヘッダーのイメージバージョンを指定する部分ですので、よほど特殊な状況じゃない限り、値は設定せず空にしておく必要があります。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク 急急急 2010年2月5日 8:49
    2010年2月5日 8:28
  • どうも有り難うございます。
    言ったとおり解決しました、感謝いたします!
    2010年2月5日 8:47
  • もし、C++/CLIのプロジェクトであれば、AssemblyInfo.cpp というファイルがあると思いますので、そこにある属性を修正する形になります。
    .NET アセンブリの場合は、アセンブリバージョンとファイルバージョンの両方を管理する必要があるので、必要に応じて修正することになります。
    C++/CLI の場合は、経験上、バージョンリソースを加える or バージョンリソースを修正するのどちらかが必要になるはずです。
    C# などでは、AssemblyVersionAttribute や AssemblyFileVersionAttribute から勝手に作ってはくれますが…。

    # もし、これらの属性だけで反映できる方法があれば突っ込みをお願いします。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2010年2月5日 16:24
    モデレータ
  • 昔作ったプロジェクトでAssemblyInfo.cppを持っていたのでてっきりセットされると思ってました。。。
    ビルドしたモジュールをチェックしたら、バージョンリソースはいってないですね。。。

    なんという仕様。。。C++/CLIって本当に鬼っ子扱いだわ。。。orz

    ということで、プロジェクト構成によらずリソースで設定する必要があるようです。
    覚えておかないと将来自分に突っ込み入れないといけなくなる。。。そんなファイルはインストール対象にはできませんって。。。w


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    2010年2月5日 16:59