Раздел развертывания.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 также получает файлы из этого места.
Преимущество:
- вы централизуете все свои dll (помните, что если вы зависите от нативных dll, вы должны установить на TFS ту версию Framework, которая вам нужна для корректной работы MSBuild)
- все проекты указывают на одинаковые зависимости
- вы просто храните общую папку.
- После того, как вы зарегистрировали пакет в папке Common, вы гарантируете, что зависимость также размещена на TFS, и при запуске MSBuild она может найти их.