TeamCity:无法在MSBuild项目中检测目标

Den*_*nis 6 msbuild nant teamcity continuous-integration

我认为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.
Run Code Online (Sandbox Code Playgroud)

我试图通过指向Rebuild目标的MSBuild/target开关显式设置目标.到目前为止没有运气.

有什么建议?提前致谢.

编辑:

    <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>
Run Code Online (Sandbox Code Playgroud)

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

EDIT2:

谢谢你.ermakovich,我用直接调用NAnt替换了msbuild任务(来自NAnt contrib),这不会在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>
Run Code Online (Sandbox Code Playgroud)

s.e*_*ich 6

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