何の違いAssemblyVersion,AssemblyFileVersionとAssemblyInformationalVersion?
-
09-06-2019 - |
質問
り組版に関する属性何が違うのか?でokを利用した場合、 AssemblyVersion
とを無視します。
MSDNは
-
指定のインタプリタのバージョンを組み立てている原因.
-
指示がコンパイラの使用特定のバージョンのWin32ファイルバージョンリソースです。Win32のファイルバージョンは必要ありませんと同じ組み立てのバージョン番号を示します。
-
定義を追加バージョン情報のための組立マニフェストの作成が行えます。
これはフォローまで そのためのベスト-プラクティスを組み立て属性?
解決
AssemblyVersion
他のアセンブリを参照するお客様組立ます。この数の変更、その他のアセンブリを更新参考文献を組立て!●の AssemblyVersion
が必要です。
使えるフォーマット: ます。マイナ.このような:
[assembly: AssemblyVersion("1.0")]
AssemblyFileVersion
使用のために展開。ことで増やすことができ番号毎に展開。で使用するように設定。用マークセンブリーと同じ AssemblyVersion
, が発生する異なる構造を作成する環境が整いました
Windowsでは、閲覧できるファイル内の物件です。
可能な場合は、このよMSBuild.のAssemblyFileVersionはオプションです。ない場合が与えられたAssemblyVersionを使用します。
使えるフォーマット: ます。軽微です。改訂される。の構築, 私が利用改正のための開発段階のもの(アルファ線、ベーター、RC、RTM)、サービスパックと温修正。このような:
[assembly: AssemblyFileVersion("1.0.3100.1242")]
AssemblyInformationalVersion
製品版ます。このバージョンでお使いのお客様または表示を多数ご用意しております。このバージョン文字列を指定することもできますように、'1.0リリース候補'.
このコード解析に関して不満でCA2243)-- 報告Microsoft (固定していないVS2013).
の AssemblyInformationalVersion
はオプションです。ない場合が与えられたAssemblyFileVersionを使用します。
使えるフォーマット: ます。minor[改訂として文字列].このような:
[assembly: AssemblyInformationalVersion("1.0 RC1")]
他のヒント
バージョンの集合体です。純大きく見込みがあることから、現在少なくとも三つの方法を指定するにはバージョンだ。
ここでは主なバージョン-関連組み立て属性:
// Assembly mscorlib, Version 2.0.0.0
[assembly: AssemblyFileVersion("2.0.50727.3521")]
[assembly: AssemblyInformationalVersion("2.0.50727.3521")]
[assembly: AssemblyVersion("2.0.0.0")]
規則にしたがって、部品のバージョンとは メジャーバージョン, マイナーバージョン, の構築, は、 修正.
の AssemblyFileVersion
は一意に識別するための 個々の組立
はんを手動で設定の詳細およびAssemblyFileVersionのバージョンの組立、その後の増分の構築および/または改定時にビルドシステム統ます。のAssemblyFileVersionを許可すべき一意に識別するためにビルドの組み立て、てご利用いただけるようにでの出発点としてデバッグします。
私の現在のプロジェクトを構築サーバのエンコードのchangelist番号からのソース制御リポジトリの構築-改正のパーツAssemblyFileVersion.この地図は直接から組立、ソースコード、組み立て生成される構築サーバーを使うことなくラベルまたは支店のソース制御、手作業で作をレコードの公開版).
このバージョン番号で保存されてWin32版資源を見学することができますをご覧いただく際には、Windows Explorer物件ページにもない。
のCLRできないものを検討しAssemblyFileVersion.
の AssemblyInformationalVersion
目的のバージョンの全体的な製品
のAssemblyInformationalVersionの目的は、コヒーレントバージョン全体の製品は多数のアセンブリが独自に収録、おそらく異なるバージョン管理方針および潜在的に開発した異なる。
"例えば、バージョン2.0の製品 を含む複数の集合体一つ これらのアセンブリは、 バージョン1.0での新しい組み立て なかった船舶のバージョン1.0、 同じ商品です。通常、設定する 詳細および部品のこのバージョン 番号を代表する公開バージョン の製品です。その増加 の構築と改パーツ各時間 でパッケージは完全な製品 そのすべての構成に基づいています。" —ジェフリー-リヒタ"CLR C#(第二版)]p.57
のCLRできないものを検討しAssemblyInformationalVersion.
の AssemblyVersion
のみでのバージョンCLR利益ばかり考えて行動していいでも全体の利益ばかり考えて行動してい AssemblyVersion
)
のAssemblyVersionを使用する、CLRへの結合を強く名前の構成に基づいています。に格納されたAssemblyDefマニフェストのメタデータテーブルの組み立て、AssemblyRefテーブルの組み立てを参照します。
これは非常に重要であるときに参考に強みは、大きくなるにつれ形成される特定のAssemblyVersionいます。全体のAssemblyVersionでなければな完全一致のための結合に成功した。例えば、参照版1.0.0.0の強みで構築時だ版1.0.0.1の組立用ランタイム時において、結合失敗します!(そしてこの利用 組み立てBindingリダイレクト.)
混乱が生じるかどうか全体の AssemblyVersion
はォームを構築できます。(別途ご相談ください。)
がありませんが、混乱するのか、全体AssemblyVersionは完全一致を行うためには、組み立てロードされます。一部の人に虚偽だけだと考え、細かなパーツのAssemblyVersionい合わせのための結合に成功した。これは良識あると仮定できますが、そこでは、最終的に間違ってます。純3.5)での些細な検証このためのバージョンのCLR.だけ実行 このサンプルコード.
私の機械の組立負荷に失敗した場合、最後の二つの核融合のログが完全に明らかに:
.NET Framework Version: 2.0.50727.3521
---
Attempting to load assembly: Rhino.Mocks, Version=3.5.0.1337, Culture=neutral, PublicKeyToken=0b3305902db7183f
Successfully loaded assembly: Rhino.Mocks, Version=3.5.0.1337, Culture=neutral, PublicKeyToken=0b3305902db7183f
---
Attempting to load assembly: Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f
Assembly binding for failed:
System.IO.FileLoadException: Could not load file or assembly 'Rhino.Mocks, Version=3.5.0.1336, Culture=neutral,
PublicKeyToken=0b3305902db7183f' or one of its dependencies. The located assembly's manifest definition
does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f'
=== Pre-bind state information ===
LOG: User = Phoenix\Dani
LOG: DisplayName = Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f
(Fully-specified)
LOG: Appbase = [...]
LOG: Initial PrivatePath = NULL
Calling assembly : AssemblyBinding, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config.
LOG: Post-policy reference: Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f
LOG: Attempting download of new URL [...].
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
と思い、ソースがこの混乱はあるかのようにMicrosoftすることができることとなったときもう少し緩やかなこの厳しいマッチングのフルAssemblyVersion、マッチングだけに必要なマイナーバージョンパーツ:
"読み込む際の組立、CLRのままに、自動的に最新の 設置サービスのバージョン マッチの専攻/マイナーバージョンの 組立が求められます。" —ジェフリー-リヒタ"CLR C#(第二版)]p.56
この行動Beta1 1.0CLRしかし、この機能が削除された前1.0リリースとなる再表面ます。純2.0:
"Note:こうした方 思い出すべきバージョン番号.残念ながら、CLRな治療 バージョン番号です。[。当期純 2.0"は、CLR扱いバージョン番号として不透明な値の場合組立 に依存版1.2.3.4の他 組み立て、CLRをロードしようとする 版1.2.3.4のみないとの結合 リダイレクト。しかし、 マイクロソフト社の変更を計画 CLRのローダーは、将来のバージョンで この負荷の最新の の構築/改訂されてならな 版組立.例えば、 は、将来のバージョンのCLRの場合、 ローダを探版 1.2.3.4の組み立て、バージョン1.2.5.0が存在するのローダが自動的に最新の サービスです。これは非常に こういうのCLRのローダ—I 用できない。" —ジェフリー-リヒタ"CLR C#(第二版)]p.164(重視 鉱)
この変更ができていな、と思うので安全にすることができるものとしMicrosoftた後に追跡することの趣旨でも遅く変更する部分もあります。って検索をウェブかっこれらの計画が見られませんでしたが他の答えなのです。まだまだたかったのです。
でメールしてジェフ-リヒタをお願い直接—きっかけになるかもしれないとなら誰でも知っていたそうだった。
言12時間以内で日曜日の朝まない、明らかにする。純1.0Beta1ローダを実施したこの"自動ロール"前機構の持ち直しての新築や改正の議会が、この行動が元に戻る。純1.0出荷します。その後、目的の再生をこなかったので前にCLR2.0出荷します。そしてSilverlight、優先順位のCLRチームは、この機能をも遅延さい。この間、多くの人たちの日CLR1.0Beta1以降、移動、ここは日の光がものすべての努力が既に始まっています。
現在の行動にとってのはこちられました。
点にも注目からどんなJeffるAssemblyFileVersionたの追加を除去した後に自動ロール"前機構が後1.0Beta1日変更のAssemblyVersionた破壊の変更のお客様がその後も安全に店を構築す。AssemblyFileVersionは安全な、なんてことはありません自動的に検討する、CLR.かもしれないよう、二つの別々のバージョン番号は、別の意味よりもっと分離の間には大-小(破壊)の構築/改定(非破壊)のAssemblyVersion.
下線について考えが変わったとき AssemblyVersion
の道徳的であるだけ配送センブリーその他のデベロッパーを参照する必要があり非常に気をつけん(な)を変更しAssemblyVersionの構成に基づいています。変更のAssemblyVersionうアプリケーション開発者は再コンパイルに対する新しいバージョン(新人AssemblyRef作品は組立bindingリダイレクトを手動でオーバーライドします。
- ない 変更のAssemblyVersionのためのサービスリリースは下位互換性をもつ。
- い 変更のAssemblyVersionのためにリリースするかは破れます。
だけを見直し版属性mscorlib:
// Assembly mscorlib, Version 2.0.0.0
[assembly: AssemblyFileVersion("2.0.50727.3521")]
[assembly: AssemblyInformationalVersion("2.0.50727.3521")]
[assembly: AssemblyVersion("2.0.0.0")]
注このAssemblyFileVersionを含むすべての興味深いサービス情報の修正の一部をこのバージョンういうサービスパックだけ、この間のAssemblyVersionで固定し退屈な古2.0.0.0.変更のAssemblyVersionい力。NETアプリケーションを参照mscorlib.dll 再コンパイルに対する新しいバージョン!
AssemblyVersion
ほとんど滞在内です。当期純な AssemblyFileVersion
どのWindowsます。場の特性を組み立てに座ったディレクトリに切り替え版]タブで、 AssemblyFileVersion
はんだご覧いただけます。まうファイルのバージョンにより、これは何の使用による以下のように変更しました。
の AssemblyInformationalVersion
マップの"バージョン"とは、純粋に"人。
AssemblyVersion
確かに最も重要なものかをスキップ AssemblyFileVersion
, ます。をご提供いただけない場合は AssemblyInformationalVersion
, のコンパイラまで剥離し、"修正"のバージョン番号と出ます。軽微です。ます。
AssemblyInformationalVersion
や AssemblyFileVersion
合わせると表示されるようになビュー、"バージョン情報ファイルをWindowsエクスプローラーの映像と情報の視聴-閲覧ファイルの物件です。これらの属性から、一緒に試してみましょうめる VERSION_INFO
資源から生じるコンパイラです。
AssemblyInformationalVersion
のバージョン"の値です。 AssemblyFileVersion
は、"ファイルのバージョン"の値です。
の AssemblyVersion
が特定です。NETアセンブリによって活用されています。純組み立てローダーを知るオープンアクセスの組立負荷/bindを行います。
これらの中には、一つだけることが絶対に必要です。純の AssemblyVersion
属性。残念なことにも原因のほとんどの問題えた場合には無差別にある場合は特に、強いネーミングお構成に基づいています。
この問い電流で強調表示する AssemblyInformationalVersion
使用NuGetの パッケージ版 を含むリリース前の接尾辞.
例えば、AssemblyVersionの1.0.3.* パッケージにasp.net コアdotnet-cliを起動します。
dotnet pack --version-suffix ci-7 src/MyProject
生産パッケージバージョン1.0.3-ci-7できる検査反射を用い:
CustomAttributeExtensions.GetCustomAttribute<AssemblyInformationalVersionAttribute>(asm);
このことは特筆に値がその他のもの
1)とWindows Explorerのプロパティ]ダイアログの組み立てのファイルがある場所といえば"ファイルのバージョン".最近では、ヘッダのダイアログが表示されるので、AssemblyVersionではなく、AssemblyFileVersion.
その他のバージョン情報部が別の要素というファイルのバージョン".ここか見ることができるた入力としてのAssemblyFileVersion.
2)AssemblyFileVersionけします。いに準番号制度に制限があるAssemblyVersionは(<build> < 65Kなど).では、3.2項による。<release tag="" text="">.<datetime>です。ビルドシステムをご記入のトークン
また、自治体の食材キャンペーンといっワイルドカードの交換がAssemblyVersionです。だい価値の"3.0.1.*" のAssemblyInfo.csは、何を見、その他のバージョン情報->ファイルバージョン要素になります。
3)私は非常に良いのではないかと思い影響を与え、インストーラーを使用以外のものを数値ファイルのバージョン番号です。
が組み立て's AssemblyVersion変更 場合には強いの名の通り、アセンブリを参照する必要の再コンパイル、それ以外の組み立てません。ない場合は強い名前のない場合は明示的に追加プロジェクトファイルがコピーされませんで出力ディレクトリが構築でき逃しによってアセンブリ、クリーニング後の出力ディレクトリです。