1

Windows エクスプローラーでマウス カーソルをファイルの上に置いたときに表示されるバージョン情報は、VERSION リソースで Visual Studio によってビルドされたファイルに設定されます。できれば、インストール プロパティでバージョンを変更するときに、ソリューションによってビルドされたすべてのファイルのバージョンを 1 か所で設定したいと考えています。これを行う方法はありますか?

これの動機は、ファイルのバージョンが更新されていない場合、インストーラーがファイルの以前のバージョンを新しいファイルに置き換えるのではなくそのままにしておくことです。これは、「RemovePreviousVersions」プロパティが設定されている場合でも発生します。ビルドおよびインストールされたすべてのファイルのバージョンを更新するという面倒でエラーが発生しやすい作業を省くために、すべてのファイルからバージョン リソースを削除しますが、これはエレガントではありません。

4

2 に答える 2

1

スタック オーバーフロー トピックの 2 番目の回答プロジェクトの製品バージョンをプログラムで変更する方法は? C++ の共通ヘッダー ファイルからバージョン番号を設定するためのソリューションを備えています。ハードコーディングされたバージョン番号を含むヘッダー ファイルを、各プロジェクトが見つけられるフォルダーに配置するだけです。

上記の回答では、バージョン番号をインクリメントする方法についても説明しています。C++ のバージョンをインクリメントする別の方法は、Microsoft の記事How to increment version information after each build in Visual C++から入手できます。

または、ソース管理リポジトリのリビジョン番号をバージョン番号の一部として使用できます。スタック オーバーフローの記事、Creating a file with build number and branch name in SVNは、TortoiseSVN ユーザー向けにこれに関する洞察を提供します。次の 2 つの記事では、これについて詳しく説明します。

.NET (C# または VB) を使用して Subversion リビジョンをバージョンに自動的に統合する

ネイティブ C/C++ を使用して Subversion リビジョンをバージョンに自動的に統合する

(上記の 2 つの Web ページには、TortoiseHg ユーザー向けの同様の手順へのリンクがあります)

理論的には、新しいバージョン番号を保持する 1 つのテキスト ファイルを作成し、次のビルド前スクリプトを実行できます。

  1. テキスト ファイルのバージョン番号をインクリメントします (オプションでリポジトリのリビジョン番号を組み込みます)。
  2. 以下の共通バージョン ファイルを書き出すか、変更します。
    • C++ (バージョン.h)
    • C# (GlobalAssemblyInfo.cs)
    • Java (Ant プロパティー・ファイル (version.properties など) 経由)
于 2012-03-01T20:55:16.063 に答える
0

ソリューションのバージョン管理を一元化するには:

  1. AssemblyInfo.cs からバージョン情報を取得します。
  2. 新しいファイル (GlobalAssemblyInfo.cs) を作成し、そこにバージョン情報を入力します (* を使用して、VS にビルドごとに新しいバージョン番号を作成させます)。
  3. リンクとして GlobalAssemblyInfo.cs を参照します。次に、既存のアイテムをファイル選択の [追加] ボタンからドロップダウンして、代わりに [リンクとして追加] を選択します。
  4. ソリューション内のプロジェクトごとに繰り返します。

バージョンには次のようなブロックを使用します。

#if デバッグ

[アセンブリ: AssemblyVersion("1.8.0.0")]

#そうしないと

[アセンブリ: AssemblyVersion("1.8.*")]

#endif

これにより、開発中に VS がすべてのアセンブリを再構築することはなくなりますが、リリースをビルドするときにすべてのアセンブリに新しいバージョン番号が与えられます。

于 2010-04-29T14:31:12.227 に答える