TeamCity:未能在MSBuild项目中检测到目标

TeamCity:未能在MSBuild项目中检测到目标,msbuild,continuous-integration,nant,teamcity,Msbuild,Continuous Integration,Nant,Teamcity,我认为TeamCity MSBuild的替换有一些问题 我尝试使用MSBuild任务(NAnt Contrib)用NAnt编译Delphi 2010项目(符合MSBuild) 如果我在控制台上没有TeamCity,一切都正常 如果我与TeamCity一起尝试,我会收到以下错误消息: Failed to detect default target(s) in the project file F:\CI\TeamCity\TeamCity\buildAgent\work\892195dab423

我认为TeamCity MSBuild的替换有一些问题

我尝试使用MSBuild任务(NAnt Contrib)用NAnt编译Delphi 2010项目(符合MSBuild)

如果我在控制台上没有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开关显式设置目标。到目前为止没有运气

有什么建议吗?提前谢谢

编辑:


*.dproj文件是一个标准的delphi 2010项目文件(它使用xsl进行了转换,但仍然是一个有效的项目文件)

编辑2:

多亏了s。ermakovich,我将msbuild任务(来自NAnt contrib)替换为对NAnt的直接调用,这不会在TeamCity服务器上产生错误。看起来TeamCity只替换对NAnt contrib msbuild任务的调用。:-)



您似乎正在控制台命令行中使用/target开关。请按照错误消息的建议,尝试在TeamCity Web UI的构建配置选项中指定所需的目标。您可以在TeamCity项目配置的Runner选项卡上找到此参数。输入以空格或分号分隔的目标。默认情况下支持生成、重新生成、清理和发布目标。

您可以确保在项目文件的
标记上定义了
DefaultTargets=“…”

在VS2017中创建项目时遇到此问题。它将项目添加为TooVersion=“15.0”,并且没有DefaultTargets属性。我在2015年更改了它,因为我的团队城市msbuild选项是2015年。所以现在两者都同步了

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">


正如我在问题中提到的,TeamCity使用嵌入的msbuild命令调用NAnt脚本。在控制台中一切正常,但TeamCity报告了一个错误。您通过控制台具体执行什么?MSBuild.exe?请提供一个示例,说明如何在NAnt脚本中使用MSBuild任务?当然,请参阅我的初始问题:-)您可以尝试将任务替换为指向MSBuild.exe的任务。这是我唯一想到的。用exec任务替换msbuild任务确实有效。伟大的谢谢您是否尝试过在TeamCity的构建代理目录中运行NAnt脚本?
    <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>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">