TeamCity: не удалось обнаружить цель в проекте MSBuild - PullRequest
6 голосов
/ 28 октября 2010

У меня есть некоторые проблемы с заменой TeamCity MSBuild, я думаю.

Я попытался скомпилировать проект Delphi 2010 (совместимый с MSBuild) с помощью NAnt, используя задачу MSBuild (NAnt Contrib).1004 * Все работает нормально, если я делаю это без TeamCity на консоли.

Если я пробую это с TeamCity, я получаю следующее сообщение об ошибке:

Failed to detect default target(s) in the project file  F:\CI\TeamCity\TeamCity\buildAgent\work\892195dab42324a3\build\src.temp\TestProject\Test.dproj.  Please define targets explicitly in the build configuration options on  TeamCity Web UI. Project does not define DefaultTargets or  InitialTargets.

Я пыталсяявно установите цель с помощью переключателя MSBuild / target, указывающего на цель Rebuild.Пока не повезло.

Есть предложения?Заранее спасибо.

Редактировать:

    <foreach item="File" property="iterator.dproj">
        <in>
            <items>
                <include name="${src.temp}\**\*.dproj" />
            </items>
        </in>
        <do>
            <msbuild project="${iterator.dproj}">
                <arg value="/target:Rebuild" />                 
            </msbuild>
        </do>
    </foreach>

Файл * .dproj является стандартным файлом проекта delphi 2010 (он преобразован с помощью xsl, но все еще является допустимым файлом проекта)

Edit2:

Благодаря s.ermakovich, я заменил задачу msbuild (из NAnt contrib) на прямой вызов NAnt, который не выдает ошибку на сервере TeamCity.Похоже, TeamCity заменяет только вызов задачи NAnt contrib msbuild.: -)

    <property name="msbuild.exe" value="${framework::get-framework-directory(nant.settings.currentframework)}\msbuild.exe" />
    <foreach item="File" property="iterator.dproj">
        <in>
            <items>
                <include name="${src.temp}\**\*.dproj" />
            </items>
        </in>
        <do>
            <exec program="${msbuild.exe}">
                <arg path="${iterator.dproj}" />
            </exec>
        </do>
    </foreach>

Ответы [ 3 ]

4 голосов
/ 29 октября 2010

Похоже, вы используете / target в командной строке консоли. Пожалуйста, попробуйте указать нужные цели в параметрах конфигурации сборки в TeamCity Web UI, как это предлагается в сообщении об ошибке. Вы можете найти этот параметр на вкладке Runner в конфигурации проекта TeamCity. Введите цели, разделенные пробелом или точкой с запятой. Цели Build, Rebuild, Clean, Publish поддерживаются по умолчанию.

1 голос
/ 16 апреля 2018

Я столкнулся с этой проблемой при создании проекта в VS2017. Он добавил проект как TooVersion = "15.0", и атрибут DefaultTargets отсутствует. Я изменил его в 2015 году, так как для моей команды MSbuild 2015 выбран вариант 2015. Теперь оба синхронизируются

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
0 голосов
/ 30 июня 2017

Вместо указания цели сборки в командной строке или в teamcity вы можете убедиться, что для тега <Project> в файле проекта определено DefaultTargets="...".

...