0

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

在此处输入图像描述

我已经从命令行自行运行了源监视器,它成功运行完成并输出了一些我的 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>

我收到以下错误:

在此处输入图像描述

研究链接:我正在关注的文章

4

1 回答 1

1

退出代码 1 并没有真正的帮助。尝试在你的命令前面加上start cmd /k(它会用一个新窗口逃避 MSBuild 的沙箱重定向cmd),看看它是否打印了其他任何东西。一种可能性ERRORLEVEL 1是 MSBuild 关闭输入流,因此如果sc.exe是交互式的并且需要从用户那里读取任何内容,它将以退出代码 1 终止。

此外,在您手动“成功运行完成”之后,您是否检查了退出代码echo %ERRORLEVEL%?它可能会安静地退出并输出一些文件,但在技术上仍然会失败,退出代码为非 0。

于 2014-08-18T16:10:09.313 回答