Di AssemblyInfo
ada dua versi perakitan:
AssemblyVersion
: Tentukan versi perakitan yang dikaitkan.AssemblyFileVersion
: Menginstruksikan kompiler untuk menggunakan nomor versi spesifik untuk sumber daya versi file Win32. Versi file Win32 tidak harus sama dengan nomor versi majelis.
Saya bisa mendapatkan Assembly Version
dengan baris kode berikut:
Version version = Assembly.GetEntryAssembly().GetName().Version;
Tapi bagaimana saya bisa mendapatkannya Assembly File Version
?
c#
.net
assemblies
version
Enyra
sumber
sumber
Jawaban:
Lihat komentar saya di atas untuk meminta klarifikasi tentang apa yang sebenarnya Anda inginkan. Semoga ini dia:
sumber
FileVersionInfo
hanya memilikistring
properti dan tidak adaVersion
properti?Assembly.GetEntryAssembly()
mengembalikan NULL misalnya dalam konteks Add-in Office, dan juga dalam banyak kasus lainnya. Juga, jika Anda berpikir tentang addins / plugins - EntryAssembly adalah aplikasi host, dan paling sering Anda menginginkan versi YourCode (TM) :) Selain itu, ada baiknya menambahkan jawaban ini yangassembly.Location
digunakan dalam jawaban yang bisa nol juga. (yaitu case acak pertama yang googledout : github.com/Azure/azure-functions-host/issues/1233 ) dan itu mungkin terjadi bahkan lebih sering daripada memiliki null entry-assembly.Ada tiga versi : perakitan , file , dan produk . Mereka digunakan oleh fitur yang berbeda dan mengambil nilai default yang berbeda jika Anda tidak menentukannya secara eksplisit.
sumber
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;
[assembly: AssemblyVersion("2.0.*")]
untuk penggunaan fileVersion ===[assembly: AssemblyFileVersion("2.0.*")]
dan untuk productVersion gunakan ===[assembly: AssemblyInformationalVersion("2.0.*")]
Yang terakhir mungkin menggunakan sufiks string untukSemVer
kompatibilitas:[assembly: AssemblyInformationalVersion("2.0.0-alpha")]
AssemblyFileVersion
tidak boleh menggunakan*
notasi suffix. :( Perlu keempat angka.[assembly: AssemblyFileVersion("2.0.0.1")]
Ketika saya ingin mengakses versi file aplikasi (apa yang diatur dalam Informasi Perakitan -> Versi file), katakan untuk mengatur teks label untuk itu pada formulir memuat untuk menampilkan versi, saya baru saja menggunakan
sumber
UPDATE: Seperti yang disebutkan oleh Richard Grimes dalam posting saya yang dikutip , @Iain dan @Dryry Lobanov, jawaban saya benar dalam teori tetapi salah dalam praktiknya.
Seperti yang seharusnya saya ingat dari banyak buku, dll., Sementara satu set properti ini menggunakan
[assembly: XXXAttribute]
, mereka mendapatkan serangan oleh kompiler dan ditempatkan keVERSIONINFO
sumber daya.Untuk alasan di atas, Anda perlu menggunakan pendekatan dalam jawaban @ Xiaofu ketika atribut dilucuti setelah sinyal telah diekstraksi dari mereka.
(Dari http://bytes.com/groups/net/420417-assemblyversionattribute - seperti disebutkan di sana, jika Anda mencari atribut yang berbeda, gantikan dengan yang di atas)
sumber
AssemblyName.Version
properti saja. Tetapi dengan setiap atribut lainnya itu adalah cara yang tepat untuk melakukannyaAssemblyInformationalVersionAttribute
sebagai gantiAssemblyVersionAttribute
pada .net core 3.1Gunakan ini:
Atau ini:
sumber