Saya mencoba untuk mendapatkan versi perakitan yang dieksekusi di C # 3.0 menggunakan kode berikut:
var assemblyFullName = Assembly.GetExecutingAssembly().FullName;
var version = assemblyFullName .Split(',')[1].Split('=')[1];
Apakah ada cara lain yang tepat untuk melakukannya?
c#
.net
.net-assembly
pengguna1
sumber
sumber
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion
ClickOnce
versi yang disebutkan oleh @Justin, itu ditentukan padaPublish
tab di dalam properti proyek (yaitu, tidak terkait dengan AssemblyVersion atau AssemblyFileVersion).HomeController
, jadi dalam Razor:v@(Assembly.GetAssembly(typeof(MyWebProject.Mvc.Controllers.HomeController)).GetName().Version.ToString(2))
Di MSDN, Assembly.GetExecutingAssembly Method , adalah komentar tentang metode "getexecutingassembly", bahwa untuk alasan kinerja, Anda harus memanggil metode ini hanya ketika Anda tidak tahu pada waktu desain apa yang sedang dieksekusi perakitan saat ini.
Cara yang disarankan untuk mengambil objek Majelis yang mewakili perakitan saat ini adalah dengan menggunakan
Type.Assembly
properti tipe yang ditemukan dalam perakitan.Contoh berikut menggambarkan:
Tentu saja ini sangat mirip dengan jawaban dengan kelas helper "public static class CoreAssembly", tetapi, jika Anda tahu setidaknya satu jenis rakitan pelaksana, tidak wajib membuat kelas helper, dan menghemat waktu Anda.
sumber
Keterangan dari MSDN http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getentryassembly%28v=vs.110%29.aspx :
The
GetEntryAssembly
Metode dapat kembalinull
ketika berhasil perakitan telah dimuat dari aplikasi unmanaged. Misalnya, jika aplikasi yang tidak dikelola membuat turunan dari komponen COM yang ditulis dalam C #, panggilan keGetEntryAssembly
metode dari komponen C # kembalinull
, karena titik masuk untuk proses adalah kode yang tidak dikelola daripada rakitan yang dikelola.sumber
GetEntryAssembly
(vsGetCallingAssembly
atauGetExecutingAssembly
) tampaknya menjadi satu-satunya hal yang berfungsi saat dipanggil dari dalam pustaka referensi.Ini harus dilakukan:
sumber
Saya akhirnya memilih
typeof(MyClass).GetTypeInfo().Assembly.GetName().Version
aplikasi netstandard1.6. Semua jawaban yang diajukan lainnya memberikan solusi parsial. Ini adalah satu-satunya hal yang membuat saya tepat seperti yang saya butuhkan.Bersumber dari kombinasi tempat:
https://msdn.microsoft.com/en-us/library/x4cw969y(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx
sumber
Product Version
mungkin lebih disukai jika Anda menggunakan versi melalui GitVersion atau perangkat lunak versi lain.Untuk mendapatkan ini dari dalam perpustakaan kelas Anda, Anda dapat menelepon
System.Diagnostics.FileVersionInfo.ProductVersion
:sumber