Как получить версию файла сборки
В AssemblyInfo
имеются две версии сборки:
-
AssemblyVersion
: укажите версию приписываемой сборки.
-
AssemblyFileVersion
: инструктирует компилятор использовать определенный номер версии для ресурса версии файла Win32. Версия файла Win32 не обязательно должна быть такой же, как номер версии сборки.
Я могу получить Assembly Version
со следующей строкой кода:
Version version = Assembly.GetEntryAssembly().GetName().Version;
Но как я могу получить Assembly File Version
?
Ответы
Ответ 1
Смотрите мой комментарий выше, прося уточнить, что вы действительно хотите. Надеюсь, это он:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;
Ответ 2
Существует три версии: сборки, файл и продукт. Они используются разными функциями и принимают разные значения по умолчанию, если вы не укажете их явно.
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;
Ответ 3
Когда я хочу получить доступ к версии файла приложения (что задано в "Сведения о сборке" → "Версия файла" ), скажем, чтобы установить для него текст ярлыка на загрузке формы для отображения версии, я только что использовал
versionlabel.Text = "Version " + Application.ProductVersion;
Ответ 4
ОБНОВЛЕНИЕ: Как упомянуто Ричардом Граймсом в моем цитируемом посте, @Iain и @Dmitry Lobanov, мой ответ верен в теории, но неверен на практике.
Как я должен был помнить из бесчисленных книг и т.д., В то время как каждый устанавливает эти свойства, используя [assembly: XXXAttribute]
, они подвергаются сильному захвату компилятором и помещаются в ресурс VERSIONINFO
.
По вышеуказанной причине вам нужно использовать подход в ответе @Xiaofu, поскольку атрибуты удаляются после того, как из них извлечен сигнал.
public static string GetProductVersion()
{
var attribute = (AssemblyVersionAttribute)Assembly
.GetExecutingAssembly()
.GetCustomAttributes( typeof(AssemblyVersionAttribute), true )
.Single();
return attribute.InformationalVersion;
}
(С http://bytes.com/groups/net/420417-assemblyversionattribute - как уже отмечалось, если вы ищете другой атрибут, замените его на приведенный выше)
Ответ 5
Используйте это:
((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
Assembly.GetExecutingAssembly(),
typeof(AssemblyFileVersionAttribute), false)
).Version;
Или это:
new Version(System.Windows.Forms.Application.ProductVersion);
Ответ 6
Вы можете получить версию сборки с My.Application.Info.Version