MS Build двойные сборки для сборок x86 и x64 и TeamCity - PullRequest
0 голосов
/ 02 июня 2011

У меня недавно было несколько проблем при попытке запустить SQLLite-репозиторий в памяти (шаблон репозитория) с Fluent Nhibernate.Когда я запускал тесты с агентом сборки (TeamCity) в Windows Server 2008, тесты не удавались, и я не мог загрузить исключения System.Data.SQLite.

После некоторой путаницы я вспомнил, что была версия System для x64.Data.SQLite в загруженных бинарных файлах SqlLite.Отбрасывание того, что рядом с модульной сборкой и запуск тестов через пользовательский интерфейс NUnit, сработало и больше не выдает никаких исключений.

Мой вопрос: можно ли сказать что-то вроде сборки: при компиляции в системе x64, ссылаться на двоичный файлиз папки B и когда в системе x86, из папки A?Итак, условная ссылка включает?

Единственный другой вариант, о котором я могу подумать сейчас, - это ограничить агенты сборки TeamCity до x64 и использовать шаг сборки сценария командной строки, чтобы перезаписать сборку в папке bin \ Release между сборками.заканчиваются муравьиные тестовые работы.Все среды разработки - x86, так что это корень проблемы.

При написании этого есть еще один вариант - но беспорядочный - изменение файла проекта после загрузки исходного кода сборки svn и до запуска сборки с использованием сценария..

1 Ответ

2 голосов
/ 02 июня 2011

Ссылки могут быть сделаны условными в вашем файле проекта (я составляю детали ссылок ниже).

<Reference
  Include="SQLLite"
  Condition="'$(Platform)' == 'x64'">
  <HintPath>PathTo/x64/SqlLite.dll"</HintPath>
</Reference>
<Reference
  Include="SQLLite"
  Condition="'$(Platform)' == 'Win32'">
  <HintPath>PathTo/Win32/SqlLite.dll"</HintPath>
</Reference>
...