Как я могу получить версию исполняемой сборки?
Я пытаюсь получить исполняемую версию сборки в C# 3.0, используя следующий код:
var assemblyFullName = Assembly.GetExecutingAssembly().FullName;
var version = assemblyFullName .Split(',')[1].Split('=')[1];
есть другой правильный способ сделать это?
5 ответов:
два варианта... независимо от типа приложения вы всегда можете вызвать:
Assembly.GetExecutingAssembly().GetName().Version
если a Windows Forms приложение, вы всегда можете получить доступ через приложение, если ищете специально для версии продукта.
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
в моем коде по мере необходимости.
в MSDN, сборка.Способ GetExecutingAssembly, это замечание о методе "getexecutingassembly", что по соображениям производительности вы должны вызывать этот метод только тогда, когда вы не знаете во время разработки, какая сборка выполняется в настоящее время.
рекомендуемый способ извлечения объекта сборки, представляющего текущую сборку, заключается в использовании
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(); }
замечания от MSDN http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getentryassembly%28v=vs.110%29.aspx:
The
GetEntryAssembly
метод может возвратитьnull
при загрузке управляемой сборки из неуправляемого приложения. Например, если неуправляемое приложение создает экземпляр COM-компонента, написанного на C#, вызовGetEntryAssembly
метод из компонента C# возвращаетnull
, потому что запись точкой для процесса был неуправляемый код, а не управляемая сборка.
Это:
Assembly assem = Assembly.GetExecutingAssembly(); AssemblyName aName = assem.GetName(); return aName.Version.ToString();
Я, наконец, остановились на
typeof(MyClass).GetTypeInfo().Assembly.GetName().Version
для приложения netstandard1.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