Visual Studioの自動インクリメントビルド番号の構文の何が問題になっていますか?
-
08-10-2019 - |
質問
Visual Studioには、人々が期待する方法でビルド番号を増やす方法がないことは知っていますが、それはサポートしています ビルド番号のランダム化:
私の AssemblyInfo.cs
ファイルが含まれます:
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]
それでも、それは私に現れたものを与えて、非センシックな結果を与えます(Visual Studioの擬似ランダムバージョン番号を可能にすることさえ):
だから、より単純な質問は次のとおりです。
何に入れますか
AssemblyInfo.cs
それを機能させるために?
から MSDN (明確にするために再フォーマット):
すべての値を指定するか、アスタリスク(*)を使用して、デフォルトのビルド番号、改訂番号、またはその両方を受け入れることができます。例えば、
[assembly:AssemblyVersion("2.3.25.1")]
2をメジャーバージョンとして、3はマイナーバージョンとして、25はビルド番号として、1を改訂番号として示します。次のようなバージョン番号
[assembly:AssemblyVersion("1.2.*")]
1をメジャーバージョンとして、2をマイナーバージョンとして指定し、デフォルトのビルドとリビジョン番号を受け入れます。次のようなバージョン番号
[assembly:AssemblyVersion("1.2.15.*")]
1をメジャーバージョンとして、2はマイナーバージョンとして、15をビルド番号として指定し、デフォルトの改訂番号を受け入れます。
デフォルトのビルド番号は毎日増加します。デフォルトの改訂番号はランダムです。
バージョン番号は次のことを意味します。
[1.0.0.0]
major.minor.build.revision
その間
[1.0.0.*]
major.minor.build.[random]
と
[1.0.*]
major.minor.[daynumber].[random]
解決
あなたが経験している問題がこの行によって引き起こされることを99%確信しています:
[assembly: AssemblyFileVersion("1.0.*")]
キャッチはそれです Visual Studioは、自動インクリメントをサポートしていません AssemblyFileVersion
, 、 のみ AssemblyVersion
. したがって、コードの残りの部分は問題ありません。単にその2行をコメントして、期待している結果が得られるかどうかを確認してください。ファイルと製品のすべてのバージョン情報は同等である必要があります。
これが正確に公式に文書化されている場所はわかりません(プロジェクトプロパティの下で「アセンブリ情報」ダイアログの「ファイルバージョン」フィールドのアスタリスクを入力しようとする場合、受信したエラーメッセージ以外)が、これは、私がアクセスできるすべてのマシンで。
ビジュアルスタジオが自分のデバイスに任せたときに物事をどのように行うかに完全にうんざりしている場合(その擬似ランダム数の愚かさについて言及してください)。 この小さな宝石 試してみてください。それはあなたの人生を変えるでしょう。
他のヒント
スクリーンショットには、.NETを含むほとんどのEXEファイルとDLLファイルに埋め込まれている無管理のバージョンリソースを表示するシェルプロパティシートエクステンションハンドラーを使用していることが示されています。残念ながら、Vistaから始めて、そのハンドラーはそのリソースにオプションのフィールドを表示しなくなりました。 ProductVersionフィールドは標準的なものですが、そうです いいえ AssemblyVersion]。 AssemblyInfo.csに対応する属性を追加する必要があります。例えば:
アセンブリ:AssemblyInformationalVersion( "1.2.3.4")
残念ながら、素晴らしい名前の一致ではありません。不足している場合、コンパイラは[Assemblyversion]の値をコピーします。これがアスタリスクになった方法です。
コンパイラは、実際にリソース内の追加フィールドを発します。ファイル +オープン +ファイルで表示され、アセンブリを選択し、バージョンノードを開き、リソース#1をダブルクリックすることができます。
から生成されたもの:
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyInformationalVersion("1.2.3.4")]
[assembly: AssemblyFileVersion("1.0.0.0")]
そこにあります、あなたはエクスプローラーで見ることができません。バマー、うまくいけば彼らはいつかそれを修正するでしょう。また、生成された[AssemblyVersion]に注意してください。改訂番号は18404です。ランダムではありません。午前10時13分にこのexeを構築しました。それは真夜中から18404 * 2秒でした。