- PR -

AssemblyVersionをコンパイル毎に動的に設定する

投稿者投稿内容
gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2007-02-08 14:49
VS2003(C#)でプログラム開発をしております。
プログラムのバージョンをAssemblyInfo.csで設定すると思うのですが、

[assembly: AssemblyVersion("1.0.0.*")]

の"*"の部分を動的に設定する事はできるのでしょうか?
やりたい事はコンパイルを行った日付をバージョンの情報に付加できないものかと考えてります。
皆様はどのようなやり方でファイルのバージョンを管理されておられますか?
あんまり良い方法が思いつかなかったので上記方法を取れればと考えています。

ご教授よろしくお願いいたします。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-02-08 15:48
引用:

gorisakuさんの書き込み (2007-02-08 14:49) より:
VS2003(C#)でプログラム開発をしております。
プログラムのバージョンをAssemblyInfo.csで設定すると思うのですが、

[assembly: AssemblyVersion("1.0.0.*")]

の"*"の部分を動的に設定する事はできるのでしょうか?
やりたい事はコンパイルを行った日付をバージョンの情報に付加できないものかと考えてります。
皆様はどのようなやり方でファイルのバージョンを管理されておられますか?
あんまり良い方法が思いつかなかったので上記方法を取れればと考えています。

ご教授よろしくお願いいたします。


更新日付が欲しいならファイルの更新日付でいいじゃんって思うんだが。
何もAssemblyVersionに入れる必要などないと思うんだが?
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-02-08 16:48
引用:

major と minor を指定すると、build でアスタリスク (*) を指定できます。アスタリスクを指定すると、 build は現地時間 2000 年 1 月 1 日からの経過日数になり、 revision は現地時間の深夜からの経過秒数を 2 で割った値になります。


ある意味、日付みたいよ
gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2007-02-08 16:59
ぶさいくろうさん、かめたろさん
お返事ありがとうございます。

[/quote]
更新日付が欲しいならファイルの更新日付でいいじゃんって思うんだが。
何もAssemblyVersionに入れる必要などないと思うんだが?
[/quote]


プログラムに特定のことを行うとファイルの更新日付が変わってしまうんです。
ですのでバージョンに入れたいのです。

[/quote]
major と minor を指定すると、build でアスタリスク (*) を指定できます。アスタリスクを指定すると、 build は現地時間 2000 年 1 月 1 日からの経過日数になり、 revision は現地時間の深夜からの経過秒数を 2 で割った値になります。
[/quote]


知らなかったです・・・
でもかなり見難いので出来れば(1.0.0.20070208)のようにしたいのが現状です。
どのように記述を行うと実現できるのでしょうか?

サンプルなどがありましたらぜひご教授ください!!
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-08 21:53
 私は、VSS を使って埋め込む予定。。。
コード:
private const string versionId = "$Id:$";
public string VersionId {
    get { return versionId; }
}



あ、これだとクラス毎か(^-^;

 あと、assemblyinfo.cs を読んで該当行を書き換えるツールを作ろうかと思っています。そいつを「ビルド前イベント」で実行する、と。
_________________
ダッチ
大ベテラン
会議室デビュー日: 2005/10/31
投稿数: 113
投稿日時: 2007-02-08 22:30
引用:

gorisakuさんの書き込み (2007-02-08 16:59) より:

でもかなり見難いので出来れば(1.0.0.20070208)のようにしたいのが現状です。
どのように記述を行うと実現できるのでしょうか?

サンプルなどがありましたらぜひご教授ください!!



直接 (1.0.0.20070208) のようにしてみると出来ないことがわかります。
各バージョンに設定できる値は 0 から 65534 までだとエラーが発生します。

引用:

gorisakuさんの書き込み (2007-02-08 16:59) より:

プログラムに特定のことを行うとファイルの更新日付が変わってしまうんです。
ですのでバージョンに入れたいのです。



こっちの方を何とかしたほうが良いような気がします。

それとバージョン管理などはビルドツールを使用する方法などもあります。
私も詳しくはわかりませんが、自動的にバージョンをインクリメントしたりするみたいです。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-02-09 10:34
Versioning Controlled Build
http://www.codeproject.com/dotnet/versioningcontrolledbuild.asp

ソースコードをちらっとみたかんじ、ちょっと改造すればお望みのもの(設定できる範囲内で日付をどう表現するかって課題は残るが)ができそうな気がしないでもないですが。でもこれちと大袈裟か。
gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2007-02-09 20:00
皆様 ご返答ありがとうございます。

日付をバージョンに入れるのがまず根本的に無理なのが分かりました。
(日付を別の何かに置き換えることで考えて見ます)

ちなみに皆様はバージョン管理をどのようにされていますか?
(機能が上がったときやバグ改修の時のリビジョンなど・・・)
今後の参考にしたいと思うので皆様のご意見をお待ちしております!

スキルアップ/キャリアアップ(JOB@IT)