2016-02-11 2 views
0

Я создал определение сборки, используя TF Build. Это ночная сборка для нашего проекта. Он должен запускать определенные тесты Unit, и он должен упаковать проекты Azure Cloud Service.TF Определение сборки с публикацией целевых и запущенных модульных тестов

Эта сборка работает некоторое время без шага упаковки. Это привело к успешной сборке, которая также провела тесты Unit.

Основываясь на следующем руководстве, я добавил упаковку облачных сервисов: https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-continuous-delivery/. В основном это связано с установкой цели на публикацию для msbuild (/ target: Publish) в определении сборки.

Проблема заключается в том, что при построении решения с целью публикации, проекты тестирования модулей не строятся. MSBuild вернется со следующим сообщением: Skipping unpublishable project. Я проследил это до общего целевого файла MSBuild. Проект будет строить только тогда, когда это издательство результаты проекта в ЕХЕ, как можно увидеть здесь: http://referencesource.microsoft.com/#MSBuildFiles/C/ProgramFiles(x86)/MSBuild/14.0/bin_/amd64/Microsoft.Common.CurrentVersion.targets,217

То, что я пробовал:

  • Принуждение здания проектов испытаний блока в публикации сборок. Я добавил следующий MSBuild для испытательной установки csproj-файлов для того, чтобы переопределить цель по умолчанию на публикацию:
     
    <PropertyGroup> 
        <PublishDependsOn> 
        Build; 
        </PublishDependsOn> 
    </PropertyGroup> 
    
  • Установка типа вывода проекта модульного тестирования для консольного приложения

В обеих обсаженной MSBuild предоставит The specified project reference metadata for the reference "..\..csproj" is missing or has an invalid value: Project для всех проектов, на которые ссылается проект тестирования модулей.

Я чувствую, что я не на правильном пути. Есть ли способ, как я могу построить проекты модульного тестирования, так и создавать и публиковать проекты Cloud Service?

+0

TFS on-prem, справа? не VSTS? –

+0

Да, на месте TFS 2012 –

+0

Я думал, что, изменив шаблон сборки, вы можете добавить второй вызов MSBuild с разными параметрами, которые выполняют только развертывание. В VSTS/2015 это намного проще сделать. –

ответ

1

Оке, это было намного проще, чем я.

/target -оценки MSBuild могут принимать несколько целей, которые построены по очереди. Я изменяю определение сборки, чтобы иметь /target:Build;Publish в качестве параметров msbuild. Это устранило проблему.

0

У меня есть ошибка (нет точки входа для облачного сервиса), делая /t:Build;Publish с моей службой. Поэтому я сделал 2 отдельных действия, один с Build и один с Publish, и это сработало.

Смежные вопросы