1

「Assembly abc.dll のビルドに使用されたファイル X のバージョンは?」という質問に答えられるツールまたは手法が必要です。私は最近 .NET 開発グループに異動しましたが、この質問は何らかの形で常に出てくるようで、私たちはそれをうまく処理できません。誰かが「ねえ、最新のコードはテスト サーバーにありますか?」と言うでしょう。そして、答えは必然的に「わからない」のようなものです。

Unix 開発の昔 (私はここで私自身と付き合っています)、SCCS ソース管理システムには、ファイルに配置できる %I% (バージョン) や %M% (モジュール名) などの特別なキーワードがありました。ファイルがチェックアウトされるたびに、適切な SCCS バージョン情報に置き換えられます。したがって、ソース ファイルの "%I% %M%" に定数文字列を割り当て、コンパイルし、結果のライブラリでUnix "strings" コマンドを実行して、どのファイルのどのバージョンが使用されたかを判断するという巧妙な方法があります。そのファイルをビルドします。

次のように、C# クラス ファイルで独自にロールする簡単なテストを行いました。

public const String VERSION_STRING = "*VERSION* = MyClass 1.0";

次に、DLL ディレクトリで次のコマンド ラインを実行しました。

>for %f in (*.dll) do find "VERSION" %f

しかし、結果は次のとおりでした。

---------- MYASSEMBLY.DLL
VERSION_STRING

これは私が求めていたものとはまったく異なります(定数の名前はわかりましたが、クラスに手動で埋め込もうとしたバージョン情報はありませんでした)。

価値があるのは、現在、バージョン管理に Clearcase を使用していることです (現在、会社の標準です)。Clearcase には、ここで役立つツール ( clearauditなど) がいくつかありますが、それには、ビルド プロセスの改良とツールの再構築に向けた努力が必要です。また、Subversion への切り替えを試験的に検討していることにも触れておく必要があります。したがって、さまざまなバージョン管理システムまたはビルド環境 (MSBuild、NAnt、CruiseControl) のいずれかで .NET と連携するソリューションは、かなりのゲームだと思います。

どのファイルのどのバージョンがどのアセンブリに入ったかを追跡するための、特に.NET中心のソリューションは他にありますか?

4

3 に答える 3

1

私はSubVersionとCC.NET継続的インテグレーションサーバーで前向きな経験があります。

最新のNAntターゲットを設定し(ここでリポジトリをロックする可能性があります)、ビルドします。ビルドが完了すると、SVNでバージョンタグが作成されます。

ファイルのバージョンは、ビルド中にタグのバージョンから簡単に推測できます。

于 2009-06-03T04:00:05.000 に答える
1

メタデータ(バージョン番号など)をデータ(VCSに保存されているファイル)に統合することは一般的にあまり良い考えではないため、特別なキーワードを使用するという考えをすぐに放棄しました(このSOの質問の議論を参照してください:「埋め込まれたバージョン番号-善か悪か? ")

私たちのアプローチは、そのような情報を使って「リリースノート」を作成することです。この単純なテキストファイルは、ビルドdllと一緒に保存されます。

于 2009-06-03T04:07:43.860 に答える
0

私の「コミュニティ」作業では、単純なスキームを使用します。アセンブリに対する[AssemblyVersion]/属性のビルド バージョンとして SVN リビジョン番号を使用します。[AssemblyFileVersion]実行時とエクスプローラーの両方でこれらをクエリするのは非常に簡単で、それらを更新するスクリプトも非常に簡単です。最初のいくつかのタスクはここにあります

于 2009-06-02T21:34:13.140 に答える