В чем разница между Microsoft.NET \ Framework и Microsoft.NET \ Framework64? - PullRequest
11 голосов
/ 28 декабря 2010

Хотелось бы узнать разницу между режимами .NET x86 и x64.

  1. В чем разница для обоих режимов?

  2. Могу ли я скомпилировать свои библиотеки, например, с .NET x64 и .NET x86?

  3. Будет ли какая-то разница для меня, если я выберу x64 вместо x86?

  4. В чем преимущество .NET x64?

  5. Нужно ли устанавливать что-то особенное, если я хочу использовать .NET x64?

Ответы [ 3 ]

14 голосов
/ 28 декабря 2010

Сложный вопрос, я постараюсь упростить:

  1. Любое приложение .Net может быть скомпилировано как для x86 (32-разрядных), так и для x64 (64-разрядных) одновременно.На самом деле они делают по умолчанию.Вы можете изменить это, изменив целевой процессор в Build-tab в Свойствах проекта.Поддерживаемые цели: «Любые» (Just-In-Time компилируется в 32- или 64-разрядные в зависимости от поддержки операционной системы), «x86» компилируется в 32-разрядные, которые работают на всех платформах, а «x64» - в 64-бит, который работает только на 64-битных платформах.

  2. Да.Смотри выше.Также обратите внимание, что иногда выполняется второй уровень компиляции, и это NGEN.Он создает собственный образ для определенного типа процессора.Однако, если вы возитесь с этим, вы уже знаете.

  3. Для .dll выберите «Любой» процессор для них.Для .EXE (точка входа) вы должны выбрать Any, x86 или x64.Есть несколько моментов, которые необходимо учитывать: x86 .Net приложениям, обращающимся к собственным .dll-файлам Windows (interpo), требуются x86 .dll-файлы.Таким образом, 64-битное приложение не может получить доступ к 32-битным вызовам API и наоборот.Это часто является причиной сбоя приложений .Net в 64-битных операционных системах.Чтобы решить эту проблему, нужно либо ссылаться на правильные файлы .dll, либо просто установить для приложения .Net значение x86 (32-разрядное) в свойствах.Все остальные зависимости автоматически становятся 32-битными во время компиляции Just-In-Time, если для них установлено значение «Any».

  4. Преимущества 64-битной системы сложны.Есть преимущества и недостатки в зависимости от того, что делает ваше приложение.Наиболее очевидным преимуществом является то, что ваше приложение может преодолеть барьер в 2 ГБ памяти.Недостаток, как объяснено в # 3, если вы ссылаетесь на 64-битную .dll, ваше приложение не будет работать в 32-битных операционных системах.

  5. Все выходит из-под контролякоробка.Не беспокойся ни о чем, кроме всего вышеперечисленного.:)

0 голосов
/ 28 декабря 2010
  1. Существуют режимы для 32-битных или 64-битных платформ (Операционные системы)
  2. Да, вы можете - фактически VS устанавливает 32-битную версию CLR на компьютер x86 и 32-битную и 64-битную (обеих) версии CLR на 64 битной винде.Поскольку VS является 32-разрядным приложением, оно работает под управлением WOW64 на 64-разрядных компьютерах.
  3. Многие приложения ведут себя одинаково как на 32-разрядном CLR, так и на 64-разрядном CLR.Но могут быть некоторые различия (например, некорректный вызов платформы, который использует Int32 для дескрипторов вместо IntPtr)
  4. То же, что и преимущество 64-битных операционных систем по сравнению с x86
  5. Если выиспользуя 64-битную Windows и VS2010, у вас есть все, что вам нужно для разработки .net x64
0 голосов
/ 28 декабря 2010
  1. Если вы компилируете свой код для Любой ЦП , x64 пытается загрузить собственные внешние DLL как версию x64. Это может быть проблематично, если эта DLL 32-битная. Выдает исключение.
  2. Да, вы можете построить его как Любой процессор
  3. s. 1 * * +1010
  4. Он (может) использовать преимущества операционной системы x64, такие как 4 ГБ + память и т. Д.
  5. Нет, по умолчанию это делается установщиком .NET.
...