1

ClickOnce アプリケーションの発行で自動的に増加するビルド/バージョン番号があります。このバージョン番号は、プロジェクト プロパティのアセンブリ バージョンとは異なります (これは、生成された WPF の [About] ボックスに自動的に表示されます)。

アセンブリ プロパティで ClickOnce のバージョン番号とプロジェクト番号を同期する方法はありますか? 目標は、両方の場所で自動的に増加する同一のバージョン番号を取得することです。

ClickOnce / パブリッシュのバージョン番号

プロジェクトのプロパティ

4

1 に答える 1

1

これを行う自動 (組み込み) 方法はありません。私のプロジェクトで使用している考えられる回避策は、カスタム msbuild タスクを使用してパブリッシュとアセンブリのバージョン情報を生成することです。

nuget パッケージとして利用できるいくつかのプロジェクトは、これらの問題を解決することを目的としていますが、それほど完全なものはありません。SemVerHarvesterCroMagVersionを見てみましょう...

上記の両方には多くの問題があります。

  1. SemVerHarvester は git/hg に関連付けられており、git タグからバージョン情報を取得します
  2. AssemblyInfo.cs ファイルを実際に単独で書き込むのではなく、Msbuild Community Tasks に依存しています。
  3. AssemblyInfo.cs ファイルは常に「変更」されます。これは、各再構築が増分再構築ではなく完全再構築であることを意味します。CroMagVersion はこれを部分的に回避します - リリースビルドで #define を定義し、この定義が存在する場合にのみ AssemblyInfo.cs を再生成します...
  4. どちらのプロジェクトも、発行のために ClickOnce システムで使用される ApplicationVersion/ApplicationRevision プロパティを直接設定しません。

上記のすべての回避策があり、すぐに github でオープンソースにする予定です...それまでの間、私が行ったことを説明します。

git からバージョン情報を読み取り、この情報に基づいてメモリ内 AssemblyInfo ファイルを作成するカスタム msbuild タスクを作成しました。既存の AssemblyInfo.cs ファイル (つまり、AssemblyVersion およびその他の属性を持つファイル) を確認し、メモリ内のバージョンの方が新しい場合にのみ上書きします。これにより、インクリメンタル リビルドが可能になります。最後に、ApplicationVersion、ApplicationRevision、および ClickOnce をサポートするその他のプロパティも出力します。

回避策をスタンドアロン ソリューションとしてオープンソース化する場合は、テキスト ファイル、git、hg などからバージョン情報を取得できるようにします。

私がまだ良い解決策を見つけていない問題:

ClickOnce は、複数のリリース チャネル (debug/beta/ custom_feature /whatever など) を直接サポートしていません。

于 2012-12-09T11:01:43.777 に答える