#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.