Мы используем msbuild для создания нашего приложения .NET на сервере, предназначенном для сборки. Мы переходим на новое оборудование, имеющее 64-битную Windows 2003. Я могу создать приложение, используя 64-битную версию msbuild, найденную в Framework64, или я могу ее построить, используя 32-разрядную версию, найденную в Framework. Есть ли какое-либо преимущество в построении с 64-разрядной версией msbuild?Есть ли какое-то преимущество для создания моего .NET-приложения с 64-битной инфраструктурой?
ответ
Не особого нет. Единственное реальное преимущество заключается в том, что 64-битная версия msbuild сможет использовать больше адресного пространства. Это действительно об этом.
Нет, но могут быть некоторые недостатки ... если ваше приложение использует сторонние драйверы, убедитесь, что они также совместимы с 64-разрядными. Мы столкнулись с проблемой, когда мы преобразовали старое приложение в .net и сохранили настройку «Платформа Target: Any CPU» по умолчанию на Build-> General, и хотя приложение очень хорошо работало на своей машине разработки, как только мы переместили ее на он сбил 64-битный сервер. Потребовалось некоторое время, чтобы отследить его обратно на сторонний драйвер ODBC, который нам требуется для взаимодействия с внешним источником данных. Приложение DID работает на 64-битной платформе, нам просто нужно было указать x86 для процессора, который по своему характеру побеждает цель.
Комбинации соединений Biztalk - один прекрасный пример сборок, которые НЕ допускают 64-разрядные бит. Поэтому повторите тест и тест, когда/после совершения такого движения.
Я не спрашивал, должен ли я запускать свое приложение в рамках 64-битной структуры. Я спрашивал, есть ли какое-либо преимущество в использовании 64-битной инфраструктуры - msbuild.exe в Framework64, чтобы создать мое приложение. –
Если вы собираетесь делать asp.net, одно большое преимущество - IIS может получить доступ к большему количеству памяти, это даст вам больше масштабируемости.
Точки не камни, ребята сделали шоу на этом
http://www.dotnetrocks.com/default.aspx?showNum=341
есть много действительно хорошая информация о нем.
Я не спрашивал, должен ли я запускать свое приложение под 64-битной инфраструктурой. Я спрашивал, есть ли какие-либо преимущества в использовании 64-битной фреймворки, msbuild.exe под Framework64, для создания моего приложения. –
да, вы получите больше памяти, если вы запустите приложение в 64-битной среде, когда это 32-битное приложение, но вы получите еще больше, когда вы скомпилируете его на 64-битный –
Если 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.
Несвязанный (и может потребовать собственный вопрос), но есть ли какая-либо причина, по которой вы знаете, что 32Bit msbuild.exe будет успешно сгенерирован, но версия 64Bit потерпит неудачу с System.AccessViolationException? –
Я столкнулся с тем же. Framework64/Msbuild не работает в GenerateSerializationAssemblies с исключением из памяти. –