Раздел развертывания.testsettings игнорируется в сборке TFS

У меня есть решение с кучей проектов C# с кучей тестов. Некоторые из этих тестов требуют немного собственных dll (предоставляемых соответствующими пакетами nuget). Чтобы решить эту проблему, был создан файл.testsettings, который копирует dll (этот nuget скопировал в $(OutDir)) в тестовый каталог перед запуском тестов.

Все это прекрасно работает на локальном компьютере, но при выполнении в разделе "Развертывание" сборки TFS файла.testsettings (или, может быть, всего файла) игнорируется - эти dll никогда не материализуются в тестовом каталоге (и в журналах нет записей о них).). Файл.testsettings упоминается в соответствующем разделе конфигурации сборки TFS.

Есть идеи, что может быть не так? (MSVC 2015, TFS 2013)

2 ответа

Решение

Для TFS 2013 он имеет только сборку XAML. Для сборки XAML в файле набора тестов не удалось скопировать сборки из пакета Nuget $(OutDir) в C:\Builds\...\builddefinition\...\TestSetting(tst)\...\Out папка до запуска тестов.

Я предлагаю вам обновить TFS до TFS 2015 или более поздней версии, чтобы использовать сборку VNext. И я уже проверял, что в Vnext build это работает. Это мой пример определения сборки: просто добавьте 3 шага.

Вы пытались увидеть, установлены ли они на вашем сервере TFS? Вы проверяли на GAC сервера TFS, зарегистрированы ли они?

Ниже приведено объяснение того, как я справляюсь со своими зависимостями, надеюсь, это поможет.

Это моя ОПЗ по этой теме. В большинстве случаев я стараюсь не возлагать на TFS ответственность за восстановление пакетов NuGet в отдельной папке. Как мне это сделать?

1- Я создаю отдельную папку на уровне моего проекта. (Common)

Если вы видите внизу, есть файл Nuget.config. Ниже приведена конфигурация

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="$\..\Common\Packages" />
  </config>
</configuration>

Теперь все мои пакеты размещены в общей папке. Теперь, если вам нужно, поместите все дополнительные библиотеки в отдельную папку. Если вы зависите от собственных библиотек, размещенных в GAC, вам следует взглянуть на сервер TFS, если они там установлены. С учетом вышесказанного я помещаю все ссылки на мои проекты, указывающие на мою общую папку, даже мой репозиторий Nuget также получает файлы из этого места.

Преимущество:

  1. вы централизуете все свои dll (помните, что если вы зависите от нативных dll, вы должны установить на TFS ту версию Framework, которая вам нужна для корректной работы MSBuild)
  2. все проекты указывают на одинаковые зависимости
  3. вы просто храните общую папку.
  4. После того, как вы зарегистрировали пакет в папке Common, вы гарантируете, что зависимость также размещена на TFS, и при запуске MSBuild она может найти их.
Другие вопросы по тегам