.NET, «Любой процессор / 64-битный (x64) / 32-битный (x86)». Рекомендации, советы и рекомендации - PullRequest
8 голосов
/ 25 декабря 2010

Если программе .NET прямо или косвенно необходимо вызвать зависимый от платформы / native / un управляемый код, это может привести к сбою.

Эта 32-битная / 64-битная тема пришла в моювозражаю после того, как я получил новый ноутбук с установленной Windows 7 64-bit и попытался разработать с базой данных SQLite.

System.Data.SQLite содержит управляемый код и неуправляемый код.Существует 32-разрядная и 64-разрядная версии, оба имеют одинаковое имя файла, но разный размер, и ваш EXE-файл должен использовать правильный.

Чтобы сделать его более сложным: Мой Visual Studio 2010 отладчик32-битное приложение , поэтому я не могу отлаживать при использовании "System.Data.SQLite-64bit" из GAC !

Как разработчикам .NET нам нужны рекомендации / знатькак / лучшие практики.

И лучшим местом для сбора такой информации, которую я знаю, является этот сайт (https://stackoverflow.com/).

Поэтому, пожалуйста, поделитесь своими идеями и известными проблемами, которые могутслужить передовым опытом или руководством для выживания в мире 32/64 / anyCPU dotnet.

Я бы предпочел одну проблему / трюк за «ответ», чтобы можно было легко комментировать / обновлять / ссылаться на них.дать несколько «ответов».

Я поделюсь своими знаниями в качестве ответа и на этот вопрос.

1 Ответ

3 голосов
/ 25 декабря 2010

Предоставление дополнительного "x86 only" main.exe может облегчить жизнь, когда задействован собственный код

После прочтения anycpu-exes-обычно-больше-проблем-потом-они-стоят Я понял, что предоставление дополнительного «x86 only» main.exe может облегчить жизнь. *

Поскольку 64-разрядная версия Windows 7 может выполнять x86-32-разрядные приложения, x86-программа будет работать на большинстве .NET-систем. (но не в системах, отличных от Intel Mono).

Пока 64-битный отладчик Visual Studio 2010 для Windows 7 * 1011 является 32-битным приложением приложение x86 можно легко отлаживать.

В выпуске x86 имеется максимально возможное количество библиотек DLL с любым процессором, кроме основного EXE и специфичных для процессора библиотек.

Для машин, которые не могут запустить x86-код или требуются огромные объемы памяти, вы можете предоставить дополнительный «любой процессор» EXE-версия. Эта версия требует адекватной установки, чтобы обеспечить использование соответствующего кода для конкретной платформы.

Visual Studio 2010 Практическое руководство. Настройка проектов для целевых платформ описывает, как установить платформу на x64. Точно так же, как вы можете нацелиться на x86.

...