উত্তর:
দুটি বিকল্প ... অ্যাপ্লিকেশন প্রকার নির্বিশেষে আপনি সর্বদা আবেদন করতে পারেন:
Assembly.GetExecutingAssembly().GetName().Version
যদি কোনও উইন্ডোজ ফর্ম অ্যাপ্লিকেশন, আপনি যদি বিশেষভাবে পণ্য সংস্করণটির সন্ধান করেন তবে আপনি সর্বদা অ্যাপ্লিকেশনটির মাধ্যমে অ্যাক্সেস করতে পারেন।
Application.ProductVersion
GetExecutingAssembly
অ্যাসেম্বলি রেফারেন্সের জন্য ব্যবহার করা সর্বদা কোনও বিকল্প নয়। এরূপ হিসাবে, ব্যক্তিগতভাবে আমি এমন প্রকল্পগুলিতে স্থিতিশীল সহায়ক শ্রেণি তৈরি করা দরকারী বলে মনে করি যেখানে আমার অন্তর্নিহিত সমাবেশ বা সমাবেশের সংস্করণটি উল্লেখ করতে পারে:
// A sample assembly reference class that would exist in the `Core` project.
public static class CoreAssembly
{
public static readonly Assembly Reference = typeof(CoreAssembly).Assembly;
public static readonly Version Version = Reference.GetName().Version;
}
তারপরে আমি CoreAssembly.Version
প্রয়োজনীয়ভাবে আমার কোডে পরিষ্কারভাবে উল্লেখ করতে পারি ।
ClickOnce
জাস্টিন দ্বারা উল্লিখিত সংস্করণটি উল্লেখ করছেন তবে Publish
এটি প্রকল্পের বৈশিষ্ট্যগুলির মধ্যে থাকা ট্যাবে নির্দিষ্ট করা আছে (যেমন, এসেম্বলি ভার্সন বা এসেম্বলিফিলিভিশন সম্পর্কিত নয়)।
HomeController
, তাই রেজারে:v@(Assembly.GetAssembly(typeof(MyWebProject.Mvc.Controllers.HomeController)).GetName().Version.ToString(2))
এমএসডিএন-তে, এসেম্বলি.গেটএক্সেকিউটিংএস্প্যাবিলিটি পদ্ধতিটি "জিটেক্সেকিউটিংএ্যাসবেশন" পদ্ধতি সম্পর্কে মন্তব্য করেছে যে পারফরম্যান্সের কারণে আপনাকে এই পদ্ধতিটি কেবল তখনই কল করা উচিত যখন আপনি ডিজাইনের সময় জানেন না কী কী অ্যাসেম্বলি বর্তমানে সম্পাদন করছে।
বর্তমান বিধানসভাটি উপস্থাপন করে এমন কোনও অ্যাসেমবিলি অবজেক্ট পুনরুদ্ধার করার প্রস্তাবিত উপায় হ'ল সমাবেশে Type.Assembly
পাওয়া কোনও প্রকারের সম্পত্তি ব্যবহার করা ।
নিম্নলিখিত উদাহরণটি চিত্রিত করে:
using System;
using System.Reflection;
public class Example
{
public static void Main()
{
Console.WriteLine("The version of the currently executing assembly is: {0}",
typeof(Example).Assembly.GetName().Version);
}
}
/* This example produces output similar to the following:
The version of the currently executing assembly is: 1.1.0.0
অবশ্যই এটি সহায়ক শ্রেণীর "পাবলিক স্ট্যাটিক ক্লাস কোরিঅ্যাস্পেস্পল" সহ উত্তরের সাথে খুব মিল, তবে, যদি আপনি কমপক্ষে এক প্রকারের এক্সিকিউটিভ অ্যাসেমব্লিকে জানেন তবে কোনও সহায়ক শ্রেণি তৈরি করা বাধ্যতামূলক নয় এবং এটি আপনার সময় সাশ্রয় করে।
using System.Reflection;
{
string version = Assembly.GetEntryAssembly().GetName().Version.ToString();
}
এমএসডিএন http://msdn.microsoft.com/en-us/library/system.reflection.asocolate.getentryassembly%28v=vs.110%29.aspx থেকে মন্তব্যসমূহ :
GetEntryAssembly
পদ্ধতি ফিরে আসতে পারেন null
যখন সমাবেশ পরিচালিত একটি একটি অপরিচালিত অ্যাপ্লিকেশন থেকে লোড হয়েছে। উদাহরণস্বরূপ, যদি কোনও নিয়ন্ত্রণহীন অ্যাপ্লিকেশন সি # তে লিখিত কোনও COM উপাদানগুলির উদাহরণ তৈরি করে, GetEntryAssembly
তবে সি # উপাদান থেকে পদ্ধতিটিতে একটি কল আসে null
, কারণ প্রক্রিয়াটির জন্য প্রবেশের বিন্দু একটি পরিচালিত অ্যাসেম্বলির পরিবর্তে নিয়ন্ত্রণহীন কোড ছিল।
GetEntryAssembly
(বনাম GetCallingAssembly
বা GetExecutingAssembly
) কেবলমাত্র রেফারেন্স লাইব্রেরির মধ্যে থেকে ডেকে এলে কাজ করে বলে মনে হয়।
এটি করা উচিত:
Assembly assem = Assembly.GetExecutingAssembly();
AssemblyName aName = assem.GetName();
return aName.Version.ToString();
অবশেষে আমি typeof(MyClass).GetTypeInfo().Assembly.GetName().Version
একটি নেটস্ট্যান্ডার্ড 1.6 অ্যাপের জন্য স্থির হয়েছি। অন্যান্য প্রস্তাবিত উত্তরগুলির সমস্ত একটি আংশিক সমাধান উপস্থাপন করে। এটিই কেবলমাত্র আমার প্রয়োজনীয় জিনিসটি পেয়েছিল।
স্থানের সংমিশ্রণ থেকে উত্সাহিত:
https://msdn.microsoft.com/en-us/library/x4cw969y(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx
Product Version
আপনি যদি গিট ভার্সন বা অন্যান্য সংস্করণ সফ্টওয়্যার মাধ্যমে সংস্করণ ব্যবহার করছেন তবে পছন্দ করা যেতে পারে।
আপনার ক্লাস লাইব্রেরির মধ্যে থেকে এটি পেতে আপনি কল করতে পারেন System.Diagnostics.FileVersionInfo.ProductVersion
:
using System.Diagnostics;
using System.Reflection;
//...
var assemblyLocation = Assembly.GetExecutingAssembly().Location;
var productVersion = FileVersionInfo.GetVersionInfo(assemblyLocation).ProductVersion
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion