代码之家  ›  专栏  ›  技术社区  ›  Dennis

teamcity:未能在msbuild项目中检测到目标

  •  6
  • Dennis  · 技术社区  · 15 年前

    我觉得TeamCity的msbuild替代品有些问题。

    我尝试使用msbuild任务(nant contrib)用nant编译Delphi2010项目(与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开关显式设置目标。到目前为止没有运气。

    有什么建议吗?事先谢谢。

    编辑:

        <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文件是一个标准的Delphi2010项目文件(它是用XSL转换的,但它仍然是一个有效的项目文件)

    编辑2:

    多亏了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 回复  |  直到 8 年前
        1
  •  4
  •   s.ermakovich    15 年前

    你好像在用 目标 切换控制台命令行。请尝试在TeamCity Web UI上的生成配置选项中指定所需的目标,错误消息建议这样做。你可以在 转轮 TeamCity项目配置的选项卡。输入用空格或分号分隔的目标。默认情况下,支持生成、重新生成、清除和发布目标。

        2
  •  1
  •   Mahesh Malpani    8 年前

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

    <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    
        3
  •  0
  •   Morten Nilsen    9 年前

    与在命令行或TeamCity中指定构建目标不同,您可以确保 DefaultTargets="..." 在上定义 <Project> 项目文件中的标记。

    推荐文章