AssemblyInfo
には2つのアセンブリバージョンがあります。
AssemblyVersion
:属性付けされているアセンブリのバージョンを指定します。AssemblyFileVersion
:Win32ファイルバージョンリソースに特定のバージョン番号を使用するようにコンパイラに指示します。 Win32ファイルのバージョンは、アセンブリのバージョン番号と同じである必要はありません。次のコードでAssembly Version
を取得できます。
Version version = Assembly.GetEntryAssembly().GetName().Version;
しかし、どうすればAssembly File Version
を取得できますか?
あなたが本当に欲しいものについての明確化を求める上記の私のコメントを見てください。うまくいけば、これはそれです:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(Assembly.Location);
string version = fvi.FileVersion;
3つのバージョン : Assembly 、 file 、および product があります。明示的に指定しなければ、それらは異なる機能によって使用され、異なるデフォルト値を取ります。
string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
string assemblyVersion = Assembly.LoadFile('your Assembly file').GetName().Version.ToString();
string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion;
string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
アプリケーションファイルのバージョン(アセンブリ情報 - >ファイルのバージョンで設定されているもの)にアクセスしたいときに、バージョンを表示するためにフォームのロード時にラベルのテキストをそれに設定するとします。
versionlabel.Text = "Version " + Application.ProductVersion;
UPDATE:Richard Grimesが 私の引用した記事 、@ Iain、@ Dmitry Lobanovで述べたように、私の答えは理論的には正しいが実際には間違っている。
私は数え切れないほどの本などを覚えているはずですが、[Assembly: XXXAttribute]
を使ってこれらのプロパティを設定している間、それらはコンパイラによってハイジャックされてVERSIONINFO
リソースに入れられます。
上記の理由から、 @ Xiaofu's answer にあるアプローチを使用する必要があります。シグナルが抽出された後で属性が削除されるためです。
パブリック静的文字列GetProductVersion() { var attribute =(AssemblyVersionAttribute)アセンブリ .GetExecutingAssembly() .GetCustomAttributes(typeof(AssemblyVersionAttribute) 、true) .Single(); return attribute.InformationalVersion; }
( http://bytes.com/groups/net/420417-assemblyversionattribute - そこに記載されているように、別の属性を探している場合は、それを上記に代入してください)
これを使って:
((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
Assembly.GetExecutingAssembly(),
typeof(AssemblyFileVersionAttribute), false)
).Version;
またはこれ:
new Version(System.Windows.Forms.Application.ProductVersion);