2009-04-09 1 views
11

Мы используем msbuild для создания нашего приложения .NET на сервере, предназначенном для сборки. Мы переходим на новое оборудование, имеющее 64-битную Windows 2003. Я могу создать приложение, используя 64-битную версию msbuild, найденную в Framework64, или я могу ее построить, используя 32-разрядную версию, найденную в Framework. Есть ли какое-либо преимущество в построении с 64-разрядной версией msbuild?Есть ли какое-то преимущество для создания моего .NET-приложения с 64-битной инфраструктурой?

ответ

10

Не особого нет. Единственное реальное преимущество заключается в том, что 64-битная версия msbuild сможет использовать больше адресного пространства. Это действительно об этом.

+2

Несвязанный (и может потребовать собственный вопрос), но есть ли какая-либо причина, по которой вы знаете, что 32Bit msbuild.exe будет успешно сгенерирован, но версия 64Bit потерпит неудачу с System.AccessViolationException? –

+2

Я столкнулся с тем же. Framework64/Msbuild не работает в GenerateSerializationAssemblies с исключением из памяти. –

2

Нет, но могут быть некоторые недостатки ... если ваше приложение использует сторонние драйверы, убедитесь, что они также совместимы с 64-разрядными. Мы столкнулись с проблемой, когда мы преобразовали старое приложение в .net и сохранили настройку «Платформа Target: Any CPU» по умолчанию на Build-> General, и хотя приложение очень хорошо работало на своей машине разработки, как только мы переместили ее на он сбил 64-битный сервер. Потребовалось некоторое время, чтобы отследить его обратно на сторонний драйвер ODBC, который нам требуется для взаимодействия с внешним источником данных. Приложение DID работает на 64-битной платформе, нам просто нужно было указать x86 для процессора, который по своему характеру побеждает цель.

0

Комбинации соединений Biztalk - один прекрасный пример сборок, которые НЕ допускают 64-разрядные бит. Поэтому повторите тест и тест, когда/после совершения такого движения.

+2

Я не спрашивал, должен ли я запускать свое приложение в рамках 64-битной структуры. Я спрашивал, есть ли какое-либо преимущество в использовании 64-битной инфраструктуры - msbuild.exe в Framework64, чтобы создать мое приложение. –

1

Если вы собираетесь делать asp.net, одно большое преимущество - IIS может получить доступ к большему количеству памяти, это даст вам больше масштабируемости.

Точки не камни, ребята сделали шоу на этом
http://www.dotnetrocks.com/default.aspx?showNum=341

есть много действительно хорошая информация о нем.

+4

Я не спрашивал, должен ли я запускать свое приложение под 64-битной инфраструктурой. Я спрашивал, есть ли какие-либо преимущества в использовании 64-битной фреймворки, msbuild.exe под Framework64, для создания моего приложения. –

+0

да, вы получите больше памяти, если вы запустите приложение в 64-битной среде, когда это 32-битное приложение, но вы получите еще больше, когда вы скомпилируете его на 64-битный –

1

Если MSBuild запускает тесты, которые имеют зависимости от библиотек x64; или если ваш процесс сборки в противном случае требует загрузки собственных библиотек x64, вам необходимо использовать msbuild x64.

Нам пришлось использовать msbuild x64, потому что мы запускали тесты xunit, а некоторые из наших библиотек имели, чтобы быть x64, потому что они называют native x64 libs.

В теории мы могли бы использовать другой тестовый бегун для запуска процесса x64 для запуска тестов; но использование msbuild x64 проще всего.

Как отмечалось в https://xunit.github.io/docs/running-tests-in-msbuild.html:

Вы можете использовать <exec> задачу MSBuild для запуска консоли бегуна. Вы можете использовать консольный бегун, если вам нужно больше контролировать выполнение тестов в 32-битных средах. При использовании бегуна MSBuild вы ограничены выбором битов исполняемого файла MSBuild, который использовался для запуска вашей сборки.

Обратите внимание, что это не имеет ничего общего с компиляцией - мы могли бы построить наш x64-проект, используя msbuild x86.