【发布时间】:2011-05-01 18:26:05
【问题描述】:
我认为 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.
我尝试通过指向 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>
*.dproj 文件是一个标准的 delphi 2010 项目文件(它是用 xsl 转换的,但它仍然是一个有效的项目文件)
编辑2:
感谢 s。 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>
【问题讨论】:
-
您是否尝试过在 TeamCity 的构建代理目录中运行 NAnt 脚本?
标签: msbuild continuous-integration nant teamcity