从MSbuild脚本启动sourcemonitor时出现问题?
我的测试文件夹设置如下: 我已经从命令行独立运行了SourceMonitor,它成功地运行到完成,并输出了我的CI过程所需的一些.xml文件 下面是我正在尝试运行的.proj文件:从MSbuild脚本启动sourcemonitor时出现问题?,msbuild,source-monitor,Msbuild,Source Monitor,我的测试文件夹设置如下: 我已经从命令行独立运行了SourceMonitor,它成功地运行到完成,并输出了我的CI过程所需的一些.xml文件 下面是我正在尝试运行的.proj文件: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Analyze" xmlns="http://schemas.microsoft.com/developer/msbuild/200
<?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>
.
我得到以下错误:
研究链接:退出代码1并没有真正的帮助。尝试使用
start cmd/k
(它将通过一个新的cmd
窗口退出MSBuild的沙盒重定向)预先结束您的命令,并查看是否打印其他内容。ERRORLEVEL 1
的一种可能性是MSBuild关闭输入流,因此如果sc.exe
是交互式的,需要从用户处读取任何内容,它将以退出代码1终止
另外,在您手动“成功运行以完成”之后,您是否使用
echo%ERRORLEVEL%
检查退出代码?它可能会悄悄退出并输出一些文件,但技术上仍然会失败,退出代码为非0。让我试试,然后再联系您。谢谢回答。我手动运行了源代码监视器命令,工作正常。退出命令是0。它现在神奇地开始工作了,我尝试了“start cmd/k”,但是cmd窗口被卡住了。仔细观察命令,我想可能是输入错误。@Ibramumtaz是的,这就是目标,start
将退出重定向,这样输入流就不会被关闭,/k
将保持其打开状态,以便您可以阅读任何其他消息(如果有)。最终归结为不正确的相对路径和打字错误。