4

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]
4

2 に答える 2

12

私はあなたが経験している問題がこの行によって引き起こされていると99%確信しています:

[assembly: AssemblyFileVersion("1.0.*")]

欠点は、Visual Studioが自動インクリメントをサポートしておらずAssemblyFileVersion、のみをサポートしていることAssemblyVersionです。したがって、残りのコードは問題ないはずです。その2行目をコメントアウトして、期待どおりの結果が得られるかどうかを確認してください。ファイルと製品のすべてのバージョン情報は同等である必要があります。

これが公式に文書化されている場所はわかりませんが(プロジェクトのプロパティの下にある[アセンブリ情報]ダイアログの[ファイルバージョン]フィールドにアスタリスクを入力しようとした場合に表示されるエラーメッセージを除く)、次のように正常に機能します。これは、私がアクセスしたすべてのマシンで使用できます。

Visual Studioが独自のデバイスに任せられたときの動作に完全にうんざりしている場合(疑似乱数の愚かさについて言及している場合)、この小さな宝石のアドインを試してみてください。それはあなたの人生を変えるでしょう。

于 2010-12-05T15:59:28.070 に答える
5

スクリーンショットは、.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です。ランダムではありません。このEXEを午前10時13分に作成しました。それは真夜中から18404*2秒でした。

于 2010-12-05T16:21:36.030 に答える