6

WiXインストーラーとMSBuildビルドスクリプトを使用したC#ソリューションがあります。現在、SVNからGitに移行中です。

バージョン番号の4番目の部分として、ビルドごとに昇順するものが必要です。これまで、そのためにSVNリビジョン番号を使用してきました。MSBuildスクリプトは、ProductVersionプロパティを定義します。これには、ビルドバージョンの4つの番号の最後としてSVNリビジョン番号が含まれています。ただし、SVNを使用しなくなるため、これを使用することはできません。

SVNリビジョン番号の代わりを探していますが、何を使用すればよいかわかりません。

  • Jenkinsは私が使用できるビルド番号を提供しますが、バージョン管理システムをJenkinsに結び付けたくありません。

  • Jenkinsもタイムスタンプを提供しますが、Microsoftのバージョン番号の制限に準拠していません。英数字で長いのに対し、バージョンの4番目の番号は0〜65535の整数である必要があります。

  • AssemblyVersionを1.0。*に設定し、残りを.NETに入力させることができます。これは私たちのアセンブリでは機能しますが、これをWiXに挿入する方法が見つかりません。ビルドされたら、アセンブリの1つからフェッチできますが、MSBuildスクリプトは<MSBuild>タスクを使用してソリューション全体を一度にビルドするため、Catch-22でスタックし<MSBuild>、アセンブリをコンパイルできるようにする必要があります。を使用して生成されたバージョン番号をフェッチできますが、を実行する<MSBuild>には、最初にコンパイルされたアセンブリを用意して、そこから生成されたバージョン番号をフェッチできるようにする必要があります。

  • 何か(何か)をコンパイルする別のターゲットをMSBuildファイルに追加し、そこからバージョン番号を取得して、<MSBuild>タスクを実際に呼び出すことができます。しかし、それはただ間違っていると感じます。

繰り返しになりますが、ビルドごとに増加する限り、その数は気にしません。タイムスタンプに基づくもので十分です。何か案は?

4

3 に答える 3

7

MSbuild Community Tasksには、 Versionという名前のタスクが含まれており、バージョン番号を生成するためのいくつかのアルゴリズムを提供します。非常に使いやすく、カスタマイズ可能です。

私見では、SDLC全体を結び付ける番号を使用することをお勧めします。これにより、デプロイされた製品をビルド結果に、これらをVCSなどにトレースできます。Christopher Painterが行ったように、jenkinsビルド番号を使用することをお勧めします。

于 2013-01-16T00:45:15.427 に答える
1

wxsファイルの1つで定義されているFile要素のIDを使用!(bind.FileVersion.FileId)して、アセンブリからバージョン番号を取得できます。FileId

次に、.NETにアセンブリ番号を生成させるだけで、WiXはそれをProductVersionとして使用します。

于 2013-01-15T18:16:44.317 に答える
1

なぜそれをジェンキンスに結び付けないのですか?バージョン番号を含むビルドに渡されるプロパティをJenkinsに管理させたいようです。それが私がBuildForge、TFSなどでそれを行った方法です。

于 2013-01-15T23:14:50.113 に答える