Команда собирается перейти с XP32 на XP64 для разработки .NET - Есть какие-нибудь ошибки? - PullRequest
6 голосов
/ 11 февраля 2009

Моя команда получает новые рабочие станции XP64. Мы использовали XP32 до сих пор. Большая часть нашей работы выполняется в управляемых C # / VS2008 / .net 3.5 и SQL Server 2005. Однако у нас есть пара приложений, которые все еще находятся в VS2005 / .net 2.0. Большинство наших приложений - это приложения веб-форм ASP.NET и службы WCF, работающие на 64-битных серверах. Тем не менее, у нас есть некоторая разработка WPF, которая должна работать на 32-битных машинах.

Существуют ли какие-либо затруднения или переходные боли, о которых мы должны знать?

Ответы [ 12 ]

7 голосов
/ 11 февраля 2009

Если вы ссылаетесь на какие-либо сторонние библиотеки DLL, скомпилированные для 32-битных систем, то вам придется ориентировать свои приложения на 32-битные. Это можно сделать, изменив настройки проекта или используя приложение corflags с параметром / 32BIT +.

Единственная «ошибка», с которой я столкнулся в течение многих месяцев работы с XP x64 в качестве рабочей станции разработки, - это то, что Edit-And-Continue не работает в отладчике Visual Studio в 64-разрядных приложениях.

3 голосов
/ 12 февраля 2009

Вы не сможете общаться с базами данных MS Access из .NET x64, потому что нет драйверов x64 Jet.

Я бы посчитал это отличной причиной для перехода на x64.

3 голосов
/ 11 февраля 2009

надеюсь, что это поможет

Регистрация 32-битной DLL COM для 64-битного вызова asp

Много ссылок о соглашении 32-64 бита

Общие часто задаваемые вопросы о 64-битной Windows

Конструкция 64-битной системы

см. Также эти советы Самое большое улучшение производительности, которое у вас было, с наименьшим изменением?

больше замечательных советов для блога: Назад к основам: 32-битная и 64-битная путаница вокруг x86 и x64 и .NET Framework и CLR

Руководство по качеству приложений для Windows от Microsoft

DevReadiness.org
Этот сайт посвящен оказанию помощи экосистеме Windows ISV в разработке высококачественных приложений для новых версий платформы. Windows 7 была недавно анонсирована на конференции PDC 2008, справа приведена ссылка на «поваренную книгу» готовности нового приложения

Специалисты Microsoft.com по OPS опубликовали в блоге информацию о переходе на x64 и о том, как все это работает.
Запуск Microsoft.com на 64-битной системе… Зависимости, доброта, ошибки

3 голосов
/ 11 февраля 2009

Это зависит.

Использовали ли вы P / Invoke в своем коде?

Использовали ли вы неуправляемый код и собирали данные в него и из него? Если это так, то вам придется пройти через этот код с зубной расческой: (.

Однако, если ваш код - чистый C #, который не использовал P / Invoke, то единственное отличие, которое вы должны увидеть, - это небольшое увеличение производительности и повышение производительности памяти:).

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

Если у вас есть какой-то 32-битный код, возможно, вы могли бы создать к нему интерфейс WCF (именованные каналы очень и очень быстрые) и использовать его для связи с 32-битной службой. Я знаю, что у вас не может быть 32-битного кода в 64-битном процессе, но я думаю, что вы можете открыть канал для 32-битного процесса, если я не ошибаюсь. В этом случае вы всегда можете использовать TCP / IP. Может спасти вас от переписывания критического кода в вашей системе и позволит вам использовать WOW64 или виртуальную машину для решения проблемы миграции.

2 голосов
/ 11 февраля 2009

Я уже некоторое время занимаюсь разработкой на 64-битной платформе. Это небольшой совет, который может избавить вас от головной боли.

Если вы получите исключение

«BadImageFormatException» (например, «Может не загружается или сборка Microsoft.TeamFoundation и т. Д. И т. Д. Или одна из его зависимостей. Попытка был сделан, чтобы загрузить программу с неверный формат ")

существует высокая вероятность того, что приложению не удалось найти 64-битную версию сборки.

Мы часто сталкиваемся с этой ошибкой при доступе к базам данных с использованием драйверов OLEDB / Jet. Я также испытал это с инструментами, которые интегрируются с TFS.

Чтобы это исправить, перейдите на вкладку «Компиляция» в настройках проекта, «Дополнительные параметры компиляции» и выберите «x86» в качестве целевого процессора.

Надеюсь, это поможет!

2 голосов
/ 11 февраля 2009

Я использовал XP 64 бит в течение нескольких месяцев в прошлом году. Мой опыт показал, что стек разработки Microsoft установлен и работает без проблем, включая 64-разрядную версию SQL Server.

У меня возникли проблемы с сетевыми драйверами для встроенной сетевой карты Marvell Yukon моей платы Asus. У 64-битных драйверов были серьезные проблемы, которые не были сразу очевидны, но стали очевидными после нескольких месяцев интенсивного тестирования. Скорость передачи по сети в гигабитной сети была не такой, как ожидалось, и когда два процесса получили доступ к одному и тому же сетевому ресурсу, Windows зависала.

Я рекомендую, как и другой предложенный плакат, проверить аппаратно-программную настройку, прежде чем переключать всю команду. Это более вероятно, когда вы увидите проблемы.

1 голос
/ 02 июля 2009

Мы столкнулись с 2 различными типами проблем:

  1. У нас был сторонний компонент, который обернул собственную 32-битную DLL. Поставщик не предлагал 64-разрядную версию, поэтому нам пришлось ориентироваться на 32-разрядную разработку.

  2. Несколько проблем с драйверами. XP-64 не завоевал особого внимания (правда?), Когда мы попробовали это. Проблемы не были связаны с разработкой, но у нас были некоторые проблемы с драйверами принтера, сетевыми драйверами и т. Д.). В Vista они изменили модель драйвера, так что сейчас может быть больше 64-битных драйверов, но я не знаю, будут ли они обратно совместимы с XP.

1 голос
/ 02 июля 2009

Теперь будет два набора источников данных ODBC (DSN): 32-разрядный и 64-разрядный. Некоторые базы данных в настоящее время не имеют обновленных драйверов для 64-разрядных систем, поэтому вам придется использовать 32-разрядные драйверы или просто подождать.

1 голос
/ 02 июля 2009

Вы можете столкнуться с проблемой с помощью string.GetHashCode (), возвращающей другое значение для одной и той же строки на 32-разрядных и 64-разрядных компьютерах, поскольку они будут запускать разные версии CLR.

Кардинально:

«Поведение GetHashCode зависит от его реализации, которая может меняться от одной версии общеязыковой среды выполнения к другой. Причина, по которой это может произойти, заключается в повышении производительности GetHashCode. ”

Подробнее здесь и здесь .

1 голос
/ 12 февраля 2009

TFS не поддерживает 64 бита (TFS Server, не уверен, что для Team Explorer)

...