Несовпадение версии файла сборки и версии Moq, что вызывает проблемы в TeamCity? - PullRequest
2 голосов
/ 09 июня 2010

Настройка TeamCity 5.0.1 для запуска модульных тестов в первый раз, мы видим эту ошибку:

Тест (ы) не пройден. System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'Moq, версия = 3.1.416.3, культура = нейтральная, PublicKeyToken = 69f491c39445e920' или одна из ее зависимостей. Система не может найти указанный файл.

Мы используем версию 3.1.416.3 Moq, dll которой имеет версию файла 3.1.0.0

Ссылка в файле нашего проекта выглядит следующим образом:

<Reference Include="Moq, Version=3.1.416.3, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\lib\binaries\thirdparty\Moq.dll</HintPath>
</Reference>

Мы можем запускать наши модульные тесты в Visual Studion с ReSharper, а также из графического интерфейса nunit (как на наших машинах разработчика, так и на рассматриваемом сервере сборки).

Что здесь происходит?

Ответы [ 2 ]

4 голосов
/ 10 октября 2013

Это может быть вызвано зависимостями NuGet. Если вы сделаете Rebuild All вашего проекта, вы можете увидеть безобидное предупреждение при компиляции проекта модульного теста, например:

Consider app.config remapping of assembly "Moq, Culture=neutral, PublicKeyToken=69f491c39445e920" from Version "4.0.10827.0" [] to Version "4.1.1309.1617" [C:\XXX\packages\Moq.4.1.1309.1617\lib\net40\Moq.dll] to solve conflict and get rid of warning.

Это предупреждение не может остановить модульные тесты, запущенные на вашем локальном компьютере, но вполне может помешать TeamCity их запустить.

Вы можете избавиться от предупреждения и заставить TeamCity запускать ваши модульные тесты, добавив что-то подобное в файл App.config для вашей сборки Unit Test;

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">   
    <dependentAssembly>
      <assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral" />
      <bindingRedirect oldVersion="4.0.10827.0" newVersion="4.1.1309.1617" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

... конечно, используя соответствующие номера версий, о которых вы получаете ошибки, и фактическую установленную версию.

2 голосов
/ 22 июня 2010

Не 100% ответ, а обходной путь:

Вы можете удалить явный номер версии в файле сборки.Так как это в любом случае предусмотрено вашим проектом и используется только для тестов.Просто измените часть 'Moq, Version = 3.1.416.3, ...' на 'Moq'.Затем используется версия подсказки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...