Как я могу показать версию сборки и работает ли она на 64 или 32 битах в моей программе?

#c# #.net #32bit-64bit

#c# #.net #32bit-64bit

Вопрос:

Как я могу показать в моей программе, работает ли она на 64 или 32 битах? (т. Е. Если я скомпилировал ее на 64 или 32 битах)

Также как я могу показать версию сборки?

Спасибо

Комментарии:

1. И, вероятно, было бы лучше разбить это на два вопроса.

Ответ №1:

Для версии:

  var ver = typeof(Program).Assembly.GetName().Version;
  

(где Program можно заменить любым типом из интересующей вас сборки)

Для архитектуры:

 bool x64 = IntPtr.Size == 8;
  

Если вам нужна версия для развертывания ClickOnce, ее можно получить, но отдельно (и на нее нужна ссылка System.Deployment.dll ):

 if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
    var ver = System.Deployment.Application.ApplicationDeployment
           .CurrentDeployment.CurrentVersion;
}
  

Комментарии:

1. спасибо за помощь, как увеличить FileVersion или версию автоматически?

2. @Gali — под версией файла — вы имеете в виду, что Windows видит? Я использую исправление в своем скрипте сборки для установки атрибутов версии сборки и файла сборки — может помочь что-то подобное

3. могу ли я получить какой-либо образец для этого исправления?

Ответ №2:

Для 32/64 бит:

 bool x64;
unsafe { x64 = sizeof(System.IntPtr) == 8; }
if (x64)
    Console.WriteLine("64 bits");
else
    Console.WriteLine("32 bits");
  

Ваши номера сборки могут быть увеличены в PropertiesAssemblyInfo.cs файле вашего проекта.

И этот фрагмент, чтобы получить версию вашей сборки во время выполнения:

 Console.WriteLine(
    System.Diagnostics.FileVersionInfo.GetVersionInfo(
        Assembly.GetExecutingAssembly().Location).FileVersion);
  

Комментарии:

1. По-видимому, вы можете использовать, IntPtr.Size что не требуется unsafe , хотя я не тестировал это сам, поскольку у меня не установлена ОС x64.

2. Я увеличил это в компиляторе Snippet, работающем под управлением .NET 3.5. Получил ошибку компилятора без unsafe и должен был также установить свойства приложения, чтобы разрешить небезопасные блоки. Слишком ленив, чтобы возиться с VS сегодня вечером. 😉

3. спасибо за помощь, как увеличить FileVersion или версию автоматически?

4. Разве здесь не указано, на какой версии вы работаете? Я думал, он хотел знать, на какой версии она была скомпилирована. Снова взглянув на его вопрос, он на самом деле задает оба.

Ответ №3:

Взгляните на эту документацию Microsoft, она дает вам более подробную информациюhttp://msdn.microsoft.com/en-us/library/system.version.build.aspx

System.Version.Сборка имеет свойства, которые дают вам все номера сборки.

Ответ №4:

Если вы ориентируетесь на .Net 4.0, вы можете использовать Is64BitProcess и Is64BitOperatingSystem.