Msbuild VS 2013中生成后任务失败

Msbuild VS 2013中生成后任务失败,msbuild,less,msbuild-task,visual-studio-2013,Msbuild,Less,Msbuild Task,Visual Studio 2013,在Visual Studio 2012中,我正在运行以下生成后任务来编译和组合我的LESS文件: $(MSBuildBinPath)\msbuild.exe "$(ProjectDir)MSBuildSettingsLess.xml" 我的MSBuildSettingsLess.xml如下所示: <?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/develop

在Visual Studio 2012中,我正在运行以下生成后任务来编译和组合我的LESS文件:

$(MSBuildBinPath)\msbuild.exe "$(ProjectDir)MSBuildSettingsLess.xml"
我的MSBuildSettingsLess.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
    <Target Name="CompileDotlessCss">
        <ItemGroup>
            <Binaries Include="*.dll;*.exe"/>
        </ItemGroup>

        <!-- Compile dotLess CSS into minified full CSS -->
        <Exec Command="$(SolutionDir)..\Tools\dotless.compiler.exe $(ProjectDir)..\GMHC\Content\less\responsive.less $(ProjectDir)..\GMHC\Content\bootstrap-responsive.less.css"/>
        <Exec Command="$(SolutionDir)..\Tools\dotless.compiler.exe $(ProjectDir)..\GMHC\Content\less\bootstrap.less $(ProjectDir)..\GMHC\Content\bootstrap.less.css"/>
    </Target>
</Project>

在Visual Studio 2013中,该操作失败,并出现以下错误:

命令“C:\Program Files(x86)\MSBuild\12.0\bin\MSBuild.exe”C:\Users\Administrator\Documents\Projects\MedicalMissions\GMHC\MSBuildSettingsLess.xml已退出,代码为9009

输出窗口显示以下内容:

1> “C:\Program”未被识别为内部或外部命令,
1> 可操作的程序或批处理文件。
1> C:\Program Files(x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(4429,5):错误MSB3073:C:\Program Files(x86)\MSBuild\12.0\bin\MSBuild.exe命令“C:\Users\Administrator\Documents\Project\MedicalMissions\GMHC\MSBuildSettingsLess.xml”


你知道它为什么会失败,或者如何找到问题的根源吗?

答案其实很简单,我只需要在调用中加上引号就可以了。因此,新的构建后任务是:

"$(MSBuildBinPath)\msbuild.exe" "$(ProjectDir)MSBuildSettingsLess.xml"

看起来它也与VS 2012向后兼容。

答案其实很简单,我只需将调用括起来。因此新的构建后任务是:

"$(MSBuildBinPath)\msbuild.exe" "$(ProjectDir)MSBuildSettingsLess.xml"

看起来它也与VS 2012向后兼容。

在msbuild定义(.proj)文件中可能需要引号

一般示例:

  <Exec Command="&quot;c:\Folder With Spaces\myfile.exe&quot;"/>  

在msbuild定义(.proj)文件中可能需要引号

一般示例:

  <Exec Command="&quot;c:\Folder With Spaces\myfile.exe&quot;"/>  

同样的问题也发生在我身上,但我正在使用文件夹中的空间。解决方案在我删除空间时起作用

Do:
D:\MyDetailsMuthuvelF\Project_Document\

Don't:
D:\My Details Muthuvel F\Project_Document\

同样的问题也发生在我身上,但我正在使用文件夹中的空间。当我删除空间时,解决方案正在运行

Do:
D:\MyDetailsMuthuvelF\Project_Document\

Don't:
D:\My Details Muthuvel F\Project_Document\

根本原因是从VS2013开始MSBuild成为VS的一部分,而不是.NET Framework。VS路径包含空格,而.NET Framework路径没有。@Austin:你应该接受这个答案,即使是你自己。@Oliver很好的回答,刚刚做了。谢谢。也为我工作了。根本原因是从VS2013 MSBuild b开始ecomes是VS的一部分,而不是.NET Framework的一部分。VS path包含空格,而.NET Framework path没有。@Austin:你应该接受这个答案,即使是你自己。@Oliver打了一个很好的电话,刚刚打过。谢谢。也为我工作过。