在AssemblyInfo
,有兩個程序集版本: spa
AssemblyVersion
:指定要賦予屬性的部件的版本。 AssemblyFileVersion
:指示編譯器對Win32文件版本資源使用特定的版本號。 Win32文件版本不須要與程序集的版本號相同。 我能夠使用如下代碼行獲取Assembly Version
: code
Version version = Assembly.GetEntryAssembly().GetName().Version;
可是,如何獲取Assembly File Version
? orm
您能夠使用My.Application.Info.Version
獲取程序集版本資源
當我要訪問應用程序文件版本(在「裝配體信息->文件版本」中設置的內容)時,例如說要在表單加載時爲其設置標籤文本以顯示版本,我剛剛使用了get
versionlabel.Text = "Version " + Application.ProductVersion;
有三個版本 : 程序集 , 文件和產品 。 它們由不一樣的功能使用,而且若是您未明確指定它們,則採用不一樣的默認值。 編譯器
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;
用這個: string
((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute( Assembly.GetExecutingAssembly(), typeof(AssemblyFileVersionAttribute), false) ).Version;
或這個: 產品
new Version(System.Windows.Forms.Application.ProductVersion);
更新:正如Richard Grimes在我引用的帖子 @Iain和@Dmitry Lobanov中提到的那樣,個人回答在理論上是正確的,但在實踐中是錯誤的。 it
正如我從無數書籍等中所記得的那樣,雖然使用[assembly: XXXAttribute]
設置了這些屬性,但它們卻被編譯器劫持並放置在VERSIONINFO
資源中。 io
因爲上述緣由,您須要在@Xiaofu的答案中使用該方法,由於從信號中提取信號後,這些屬性將被剝離。
public static string GetProductVersion() { var attribute = (AssemblyVersionAttribute)Assembly .GetExecutingAssembly() .GetCustomAttributes( typeof(AssemblyVersionAttribute), true ) .Single(); return attribute.InformationalVersion; }
(來自http://bytes.com/groups/net/420417-assemblyversion屬性-如此處所述,若是您要查找其餘屬性,請將該屬性替換爲上面的屬性)