ビルドを[メジャー]。[マイナー]。[マイクロ]。[リビジョン]としてバージョン管理するという慣習があります。例: 2.1.2.33546。
ビルドスクリプトは、以下を含むAssemblyInfo.csファイルを自動的に更新します
[Assembly: AssemblyVersion("x.y.z.w")]
アセンブリにバージョン番号を埋め込むため。
しかし、Subversionリポジトリがリビジョン#65535に達したばかりで、ビルドが壊れました。
バージョン番号の各番号の最大値は65534であることがわかります(おそらくWindowsの制限によるものです)。
この問題に遭遇しましたか?良い解決策/回避策はありますか?
私たちはリビジョン番号を埋め込むスキームが好きで、明らかにSubversionサーバーをリセットすることはできません:-)
もう少し背景情報:
これが変更される可能性は低いため、オプションは次のとおりです。
1つのオプションは、[AssemblyFileVersion]
を使用することです。これでも警告が発生しますが、少なくとも次のようにビルドされます。
[Assembly: AssemblyFileVersion("1.0.0.80000")]
同じ規則を使用することにしました。Windowsのバージョン番号の制限により、リビジョン番号を保持するために、バージョン番号の「マイクロ」部分を削除することにしました。バージョン番号は[major].[minor].[revision / 10000].[revision % 10000]
になっているため、リビジョン65535からビルドされたアセンブリのバージョンは2.01.6.5535です。
MSDNによる 、AssemblyVersionAttributeバージョン番号のコンポーネントはUInt16.MaxValue - 1
に制限されていますアセンブリメタデータによるつまり、アセンブリにこれ以上の番号を格納することはできませんファイル。 Marc Gravellが示唆しているように、バージョン番号を読む人によっては、ファイルバージョンで十分な場合があります。