无法从MSbuild脚本启动sourcemonitor?

时间:2014-08-18 15:51:15

标签: msbuild source-monitor

我的测试文件夹设置如下:

enter image description here

我已经从命令行自行运行了源监视器,它成功运行并输出了我的CI过程所需的一些.xml文件。

以下是我正在尝试运行的.proj文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Analyze" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
  <MSBuildCommunityTasksPath>.</MSBuildCommunityTasksPath>
</PropertyGroup>
  <Import Project="MSBuild.Community.Tasks.Targets"/>

  <Target Name="Analyze">  
    <Exec Command="sm.exe /C sm-commands.xml"/>

    <XmlRead XPath="//*/metric[@id='M0']" XmlFileName="sm-summary.xml">
      <Output TaskParameter="Value" PropertyName="NumberOfLines" />
    </XmlRead>
    <TeamCityReportStatsValue Key="NumberOfLines" Value="$(NumberOfLines)" />

    <XmlRead XPath="//*/metric[@id='M5']" XmlFileName="sm-summary.xml">
      <Output TaskParameter="Value" PropertyName="MethodsPerClass" />
    </XmlRead>
    <TeamCityReportStatsValue Key="MethodsPerClass" Value="$(MethodsPerClass)" />

    <XmlRead XPath="//*/metric[@id='M7']" XmlFileName="sm-summary.xml">
      <Output TaskParameter="Value" PropertyName="StatementsPerMethod" />
    </XmlRead>
    <TeamCityReportStatsValue Key="StatementsPerMethod" Value="$(StatementsPerMethod)" />

    <XmlRead XPath="//*/metric[@id='M10']" XmlFileName="sm-summary.xml">
      <Output TaskParameter="Value" PropertyName="MaxComplexity" />
    </XmlRead>
    <TeamCityReportStatsValue Key="MaxComplexity" Value="$(MaxComplexity)" />

    <XmlRead XPath="//*/metric[@id='M14']" XmlFileName="sm-summary.xml">
      <Output TaskParameter="Value" PropertyName="AvgComplexity" />
    </XmlRead>
    <TeamCityReportStatsValue Key="AvgComplexity" Value="$(AvgComplexity)" /> 

    </Target>
</Project>

我收到以下错误:

enter image description here

研究链接:Article I am following

1 个答案:

答案 0 :(得分:1)

退出代码1并没有多大帮助。尝试使用start cmd /k添加命令(它将使用新的cmd窗口转移MSBuild&#39; s sandbox重定向)并查看是否打印了其他内容。 ERRORLEVEL 1的一种可能性是MSBuild关闭输入流,因此如果sc.exe是交互式的并且需要从用户读取任何内容,它将以退出代码1终止。

此外,在您手动&#34;成功完成&#34;后,您是否使用echo %ERRORLEVEL%检查了退出代码?它可能会安静地退出并输出一些文件,但在技术上仍然会失败,并带有非0退出代码。