Два варианта ... независимо от типа приложения, который вы всегда можете вызывать:
Assembly.GetExecutingAssembly().GetName().Version
Если приложение 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
в своем коде как требуется.
Это должно сделать:
Assembly assem = Assembly.GetExecutingAssembly();
AssemblyName aName = assem.GetName();
return aName.Version.ToString();
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 :
Метод GetEntryAssembly
может вернуть null
, когда управляемая сборка была загружена из неуправляемого приложения. Например, если неуправляемое приложение создает экземпляр COM-компонента, написанного на C #, вызов метода GetEntryAssembly
из компонента C # возвращает null
, поскольку точкой входа для процесса был неуправляемый код, а не управляемая сборка .
В MSDN Assembly.GetExecutingAssembly Method является замечанием о методе «getexecutingassembly», что по соображениям производительности вы должны вызвать этот метод только тогда, когда вы не знаете об этом
Рекомендуемый способ получения объекта Assembly, который представляет текущую сборку, заключается в использовании свойства 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
Конечно, это очень похоже на ответ со вспомогательным классом «public static class CoreAssembly», но, если вы знаете хотя бы один тип исполняющей сборки, это isn Обязательно создавать класс-помощник, и это экономит ваше время.
Наконец я остановился на 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