我正在使用* .csproj中的自定义目标和需要nodejs的原始编译器构建* .less文件。节点在所有开发机器上都不可用,因此如果计算机上没有节点,我需要能够关闭目标。我怎么能这样做?
<Target Name="CompileLessCss" BeforeTargets="Compile"
Inputs="@(LessCssRoot);@(LessCssInput)" Outputs="@(LessCssOutput)">
<Exec Command="node "$(SolutionDir)/Tools/less.js/bin/lessc" --verbose @(LessCssRoot) @(LessCssOutput)" ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" />
</Exec>
</Target>
答案 0 :(得分:0)
您可以检查$(PATH)变量中是否有nodejs路径可用。或者您可以使用continue on error执行一次节点,以确定它是否与exec任务一起安装,不是很好但是它可以工作。
<Exec ContinueOnError="True" Command="node --help">
<Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
</Exec>
<PropertyGroup>
<NodeInstalled>False</NodeInstalled>
<NodeInstalled Condition=" '$(ErrorCode)' == '0' ">True</NodeInstalled>
</PropertyGroup>
<Exec Command="node [args]" Condition=" '$(NodeInstalled)' == 'True' " />