Невозможно запустить тест MSpec из-за того, что TeamCity неправильно создает тестовую сборку - PullRequest
1 голос
/ 07 апреля 2011

Я пытаюсь запустить тест MSpec после сборки моего решения. Итак, мой скрипт MSBuild настроен следующим образом:

<?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  
      <Target Name="Build">
        <MSBuild Projects="../MyApplication.Web.sln" />
        <Message Text="Building solution" Importance="high" />
      </Target>

      <Target Name="TeamCity" DependsOnTargets="Build">
        <Message Text="Before executing MSpec command" Importance="high" />
        <Exec Command="mspec.exe ..\Hosts\MyApplication.Hosts.Web.Specs\bin\MyApplication.Hosts.Web.Specs.dll --teamcity" />
        <Message Text="Running MSpec" Importance="high" />  
      </Target>
    </Project>

Затем я называю «TeamCity» своей целью в TeamCity. Когда команда

"mspec.exe .. \ Hosts \ MyApplication.Hosts.Web.Specs \ Bin \ MyApplication.Hosts.Web.Specs.dll --teamcity "

выполнено, я получаю следующую ошибку:

C: \ TeamCity \ buildAgent \ work \ 117e3aa3bb76aad0 \ Build> mspec .. \ Hosts \ Application.Hos ts.Web.Specs \ Bin \ Application.Hosts.Web.Specs.dll Не удалось загрузить файл или сборку 'file: /// C: \ TeamCity \ buildAgent \ work \ 117e3aa3bb7 6aad0 \ Hosts \ Application.Hosts.Web.Specs \ bin \ Application.Hosts.Web.Specs.dll 'или е его зависимости. Предпринята попытка загрузить программу с неверным Ormat.

Проведя некоторое исследование, я обнаружил, что «MyApplication.Hosts.Web.Specs.dll» на моем локальном компьютере и на сервере сборки, хотя и 15 КБ, имели разные контрольные суммы md5. Это может объяснить, почему выполнение теста MSpec может вызвать ошибки. На самом деле, если я скопирую dll со своего локального компьютера на сервер сборки, тест запустится.

Таким образом, мой вопрос заключается в том, сталкивался ли кто-то еще с этой же проблемой сборки сборок "плохо"?

-EDIT- Локально я создаю решение как 64-битное приложение, но в TeamCity я создаю его как 32-битное (x86). Может ли это быть проблемой?

PS: я пытался создать его как 64-битное приложение в TeamCity, но у меня появляются другие ошибки, которые я бы скорее проигнорировал. Однако для полноты картины вот оно:

Client\ProdMaster.SLCharts\ProdMaster.SLCharts.csproj
[15:11:22]: [Client\ProdMaster.SLCharts\ProdMaster.SLCharts.csproj] GetFrameworkPaths
[15:11:22]: [GetFrameworkPaths] ValidateSilverlightFrameworkPaths
[15:11:22]: [ValidateSilverlightFrameworkPaths] C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.Common.targets(104, 9): The Silverlight 4 SDK is not installed.

1 Ответ

2 голосов
/ 07 апреля 2011

David

  • Какая версия MSpec вы Бег? Если вы все еще на 0.3.0.0 я рекомендуем вам перейти на большинство последние 0.4.9.0 build . Эта сборка также содержит mspec.exe (AnyCPU) как mspec-x86.exe (x86). Вам следует используйте исполняемый файл, соответствующий вашей сборке окружающая среда / архитектура.

  • Можете ли вы проследить сборку привязка с помощью Furation Log Viewer - это часть Windows SDK. Сообщение об ошибке «Была сделана попытка загрузить программу с неверным формат. "указывает, что MSpec может найти спецификации DLL, но цель архитектуры не совпадают между исполняемый файл MSpec и и и сборка.

...