1つの場所から更新されたすべてのファイルのVisual-studio-2008 versionInfo
-
02-10-2019 - |
質問
Windows Explorerのファイルにマウスカーソルがホーニングしたときに表示されるバージョン情報は、Visual Studioがバージョンリソースのファイルに設定しています。ソリューションによって構築されたすべてのファイルのバージョンを1つの場所に設定したいと思います。できれば、インストールプロパティのバージョンを変更するときです。これを行う方法はありますか?
これの動機は、ファイルのバージョンが更新されていない場合、インストーラーはファイルを新しいファイルに置き換えるのではなく、ファイルの以前のバージョンを残すことです。これは、「removepreviousversions」プロパティが設定されている場合でも発生します。構築およびインストールされているすべてのファイルでバージョンを更新するという退屈でエラーが発生しやすいタスクを保存するために、すべてのファイルからバージョンリソースを削除しますが、これはエレガントではありません。
解決
Stack Overflowトピックの2番目の回答 プロジェクトの製品バージョンをプログラム的に変更する方法は? C ++の共通ヘッダーファイルからバージョン番号を設定するためのソリューションを備えています。各プロジェクトが見つけることができるフォルダーに、ハードコーディングされたバージョン番号を含むヘッダーファイルを配置するだけです。
上記の回答では、バージョン番号を増やす手段についても説明しています。 C ++バージョンの増分の代替アプローチは、Microsoftの記事から入手できます VisualC ++でビルドするたびにバージョン情報をインクリメントする方法.
または、バージョン番号の一部として、ソースコントロールリポジトリの改訂番号を使用できます。スタックオーバーフロー記事 svnでビルド番号とブランチ名を持つファイルを作成する TortoiseSVNユーザーにこれについての洞察を提供します。次の2つの記事では、これをより深く検討しています。
.NET(C#またはVB)を使用して、サブバージョンの改訂をバージョンに自動的に統合する
ネイティブC/C ++でサブバージョンの改訂をバージョンに自動的に統合する
(上記の2つのWebページは、Tortoisehgユーザーの同様の手順へのリンクを備えています)
理論的には、新しいバージョン番号を保持している単一のテキストファイルを使用してから、以下のビルド前スクリプトを実行できます。
- テキストファイルのバージョン番号をインクリメントします(オプションでリポジトリリビジョン番号を組み込んでいます)
- 次のような一般的なバージョンファイルを書き込みまたは変更します
- C ++(version.h)
- C#(GlobalAssemblyinfo.cs)
- Java(Antプロパティファイルによる、例:version.properties)
- 等
他のヒント
ソリューションのバージョン化を集中化するには:
- assemblyinfo.csからバージョン情報を取り出します。
- 新しいファイル(GlobalAssemblyInfo.cs)を作成し、バージョン情報を入れます(ビルドごとに新しいバージョン番号を作成するためにVSを取得する *を使用)。
- リンクとして参照GlobalAssemblyinfo.cs:add |既存のアイテムは、ファイルの選択で追加ボタンをドロップダウンして、代わりにリンクとして追加を選択します。
- ソリューション内の各プロジェクトを繰り返します。
このようなブロックをバージョンに使用します。
#if debug
アセンブリ:AssemblyVersion( "1.8.0.0")
#そうしないと
アセンブリ:AssemblyVersion( "1.8。*")
#endif
これにより、VSは開発中にすべてのアセンブリを再構築することを妨げますが、リリースを作成するときにすべてのアセンブリに新しいバージョン番号を提供します。