2011-06-26 17 views
7

私は最近私の製品(exe)をバージョン管理し、assemblyinfo.csで毎回ビルド番号を増やしています。.net:DLLとEXEのバージョン番号?

素晴らしい作品です。私の製品は現在バージョン1.5.x.xになっていますので、成功するたびに4桁を増やしてください。

私のアプリケーションの一部であるDLLもあります。

どのようにこれらのバージョンを提案するでしょうか?私はこれらのバージョンを私のexe、つまり1.5.x.xと同じものにするべきですか、別のバージョン番号を作成すべきですか?

これは現在私が少し混乱しているところです。

私の製品の機能が向上すると、私は1.5から2.0を上げることができますが、これはどこでDLLを残していますか?

バージョン管理上の任意のアドバイスは感謝

おかげで、私の意見では

答えて

2

あなたはおそらく複数の意見がありますが、私はそれを単純にして、EXEとDLLのバージョンを同期させておくといいでしょう。 DLLとEXEのバージョンを個別にリリースしようと思っているのであれば、私の見解を変えるかもしれませんが、そのことについては言及していません。サードパーティ製のコンポーネント(主な製品とは異なるスケジュールでリリースされる)のようなファイルの一部を扱っている場合は、このアプローチを採用します。しかし、もう一度、もしあなたがこの要件を持っていなければ、私はすべてのファイルバージョンを同期させておくといいでしょう。

私がよく見てきたコンベンションでは、製品バージョン(メジャー/マイナーなど..)を表すために最初の3つの数字を使用し、バージョン番号の4番目の部分はソースコントロールバージョンを表しますバイナリの元のソースファイル)。あなたが分離彼らのバージョンを管理する必要が私の意見で

希望に役立ち、

ジョン

1

一つだけのアプリケーション間で共有されたファイルassemblyinfoを持つべきであると認識されるであろう。そうすれば、それを維持するのは簡単です。もちろん、それは私に受け入れられる標準であるすべてのアセンブリのための単一のバージョンを持っていることを意味します。 thisを参照してください。

+3

これは、DLLがアプリケーションの不可欠な部分であるか、独自のプロジェクトであるかによって異なります。私は現在、他のプロジェクトで使用できるライブラリDLLを持つアプリケーションに取り組んでいます。ライブラリDLLには独自のアセンブリ情報があり、バージョン番号が使用されている他のすべてのプロジェクトのバージョン番号と一致するとは限りません。 –

+1

@Robert Harvey、はい - もちろんです。 DLLがアプリケーションの不可欠な部分でない場合、共有されたassemblyinfoを使用することはできません。しかし、この特定の質問では、DLLはアプリケーションの一部であるようです。 – Illuminati

1

2つのアプリケーション(EXE)が同じDLLを使用できるためです。 DLLのバージョンは?

DLLのバージョンは、それを実行するEXEから独立している必要があります。

0

反対側から見てください - なぜあなたはバージョン番号が必要ですか?たとえば、あるクライアントの場所に展開されているものを知ることができます。

メインexeと一部のdllとしてデプロイされているアプリケーションがあり、このdllは他のアプリケーションの一部ではないため、dllのバージョン管理を完全に忘れても安全です。

それ以外の場合は、DLLが複数のプロジェクトに含まれている場合は、バージョンをいくつかの機能を追加したり、かなり大きなものを変更したり、変更したりするなど、MINOR 1.X.0.0を増やすなど、あなたが内部で完全に異なるクラスを持っているならば...

ための機能の主を増やすためとして、それは再び、もちろん個人的な好みですが、私はそこのようなものを助言する:

  • 増加MINOR機能が追加され、いくつかの主要なマイルストーンは
  • に達した場合ユーザーインターフェイスのパラダイムを変更した場合はMAJORを増やしてください。これは、大きな再設計や書き換えを行ったことを示唆しています。
  • また

:あなたは本当にあなたがそれを許可するように複雑得ることができ、非常に大きな話題、上で触れているVersion Syntax Explanation?

0

最終的には、選択したバージョン管理の方法は、達成する必要のあるものと、それを維持するために割り当てる時間に依存します。 2つは直接関連しています。

バージョニングの主な2つの目標は、サイドバイサイド実行とトラッキングです。 サイドバイサイド(SxS)では、同じアプリケーション内で複数のバージョンの同じDLLを実行できます。アセンブリバージョン番号を変更しなければ、これは不可能です。 トラッキングは、顧客のマシンで実行されている正確なコードスナップショットを決定するだけです。 アセンブリバージョンを変更することでどちらも達成できますが、アセンブリバージョンを変更することにより、最初にを達成することができます。

多くの人が、すべてのDLL/EXEでバージョン番号を共有することをお勧めします。これは最も簡単な方法であるため、展開の柔軟性はほとんどありません。

例えば、コントラクト抽象化(具体的な型ではなくインターフェイス間でDLL間の依存関係を定義する)を使用している場合、アプリケーションを複数の「バージョン管理サイロ」に分割することができます。 例として、クライアントとサーバーがあります.3番目のアセンブリで定義されている場合、相互依存性はWCFと契約しています。 これらのバージョンが別々にバージョン化されている場合は、クライアントに影響を与えることなく、新しいバージョンのサーバーをリリースできます(同じ契約に準拠している限り)。およびその逆。

あなたが見るように、要求が増えるにつれてバージョニングの粒度を増やすことができますが、それは耳を傾けます。

あなたがやっていることは、何をしているのか、座って要件を計画してから、バージョン管理の境界線(契約によって分けることができるコンポーネント)をマッピングすることです。

この次はテスト部門の規模によって異なりますが、ファイルバージョンにビルド番号/日付が反映されているかどうかを確認することをおすすめします。 お客様のリリースごとにアセンブリバージョンを1つだけ増やしますが、ビルドから出てくるDLLのコレクションごとに異なるバージョンのファイルを用意する必要があります。これは、テスト中に問題が見つかった場合、これらのDLLを一意に識別できるようにすることで、DLLの起源を正確に特定することができなくなるからです。

0

単純な答えは、変更するとバージョン番号を増やすことです。 EXEとDLLを同期させておく理由はないからです。 DLLはポータブルであることが意図されています - すべてのEXEが理論的にそれを使用できます。既にDLLのバージョン番号がある場合は、それを現在のベースラインとして使用し、変更する際には必要に応じてバージョン番号を増やしてください。