我认为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转换,但它仍然是一个有效的项目文件)
EDIT2:
感谢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>
答案 0 :(得分:4)
您似乎在控制台命令行中使用 / target 开关。请尝试在TeamCity Web UI的构建配置选项中指定所需的目标,如错误消息所示。 Yon可以在TeamCity项目配置的 Runner 选项卡上找到此参数。输入以空格或分号分隔的目标。默认情况下支持构建,重建,清理,发布目标。
答案 1 :(得分:1)
我在VS2017中创建项目时遇到了这个问题。它将项目添加为TooVersion =“15.0”并且没有DefaultTargets属性。我改变了它2015年,因为我的团队城市msbuild选项是2015年。所以两者现在同步
wheel
答案 2 :(得分:0)
您可以确保在项目文件中的DefaultTargets="..."
标记上定义<Project>
,而不是在命令行或teamcity中指定构建目标。