2016-02-02 7 views
1

У меня есть компьютер W7 x64, но я знаю о совместимости, когда окончательное приложение будет установлено на другом ПК.Могу ли я разрабатывать приложения x86 в VB.NET с операционной системой x64?

Выполняется автоматически на любом ПК с ОС Windows? Что я должен учитывать, чтобы улучшить совместимость?

+1

64-разрядная версия Windows включает в себя уровень совместимости WOW, поэтому практически любое 32-разрядное приложение работает нормально. Я делаю все свое развитие на 64-битных рабочих станциях, главным образом, для 32-разрядных клиентов. Единственное, что вы * не можете сделать, это бинарные файлы - например, 32-разрядные и один 64-разрядные, поэтому все ваши библиотеки должны ориентироваться на ту же архитектуру, что и ваше приложение. –

+0

@CodyGray Итак, когда я компилирую в x64 OS, я получаю два двоичных файла: один для x64 и один для x32? –

+1

Нет, вы получаете только двоичные файлы, которые вы запрашиваете для компилятора. Обе платформы (x86 и x64) имеют кросс-компиляторы, которые могут генерировать двоичные файлы для другой платформы. И, очевидно, вы можете создать двоичный файл для вашей текущей платформы. У .NET также есть эта сложность «Любой процессор», которую вы можете установить, чтобы заставить JITer генерировать код «на лету» для текущей архитектуры системы. Это отлично подходит для максимального развертывания вашего приложения, но это кошмар для приложений, зависящих от сторонних библиотек. Помните, что битность всех библиотек должна соответствовать приложению. –

ответ

3

Да, вы можете компилировать x86, x64 или любые приложения ЦП. Вы также можете запустить любой из них на своей машине x64.

Если вы скомпилируете приложение x64, его можно запустить только на машине x64. Это единственное ограничение.

Обратите внимание, что если вы используете сборку, которая была скомпилирована для определенной архитектуры, ваше приложение должно использовать одну и ту же архитектуру, чтобы избежать ошибок при работе на другой машине.

+0

Так что я должен всегда использовать «Любой процессор» при компиляции для улучшения совместимости. Каковы недостатки? Почему не задано как значение по умолчанию? –

+0

Использование любого CPU, если все сборки, на которые вы ссылаетесь, также установлены для любого CPU. –

+1

@E_Blue Любой процессор по умолчанию. Причина, по которой вы не будете использовать его, - это ваша программа (или библиотека, используемая вашей программой) должна связываться с собственным (не .NET) кодом. Исходный код не может автоматически переключаться между 64-битным режимом и 32-битным режимом. Он может делать только один или другой. 32-разрядные программы могут работать на 64-битных окнах, поэтому люди просто выпускают 32-разрядную версию своей DLL, потому что она будет работать с обоими в любом случае. –