2009-09-18 1 views
1

На 32-битной машине Windows Server 2003 я создал проект платформы и библиотеки платформы Visual Studio, настроенный на «Любой процессор». В проекте имеется ссылка System.Data..net Проблема с 64-разрядной ссылкой

Я изменил цель платформы на x64, построил проект и поместил DLL в GAC на 64-битной машине. 64-битная машина имеет как 64-битную, так и 32-разрядную версии System.Data.

В этом случае моя DLL ссылается на то, что System.Data - 32 бит или 64 бит?

Заранее благодарен!

Обновление: Я могу видеть, как моя DLL работает в режиме AMD64 бит на 64-битной машине.

ответ

2

Когда вы компилируете конфигурацию «Любой процессор», ваша программа будет работать либо на x86, либо на x64 (и, возможно, на других архитектурах, хотя я не знаю о какой-либо другой реализации платформы .NET, которая работает на другом архитектуры, но это оффтоп).

Если вы скомпилируете конфигурацию x86, ваше приложение будет работать ТОЛЬКО на компьютерах x86 (хотя win x64 может запускать приложения x86, и, таким образом, ваше приложение будет работать на нем, хотя оно все равно будет приложением x86). Аналогично, если вы скомпилируете конфигурацию x64, приложение будет работать ТОЛЬКО на машинах x64, а не на компьютерах x86.

В результате, когда ваше приложение работает на машине x86, оно использует 32-разрядную dll. И когда он запускается на машине x64, он будет использовать 64-битную dll, предполагая, что вы скомпилированы в x64 или «Any CPU»; если вы скомпилированы как «x86», он будет использовать 32-битную dll.

Я надеюсь, что это не было слишком запутанным.

+0

Итак, на машине x64 моя DLL проекта, скомпилированная в x64, будет использовать x64 'System.Data' DLL. Это верно? – Vijay

+0

Да, это правильно. – AASoft

1

Если вы нацеливаете «x64», то ваша программа ссылается на 64-разрядную версию System.Data.

Смежные вопросы