1

在 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): error MSB3073: The command "C:\Program Files (x86)\MSBuild\12.0\bin \msbuild.exe "C:\Users\Administrator\Documents\Projects\MedicalMissions\GMHC\MSBuildSettingsLess.xml"

知道它为什么会失败或如何追根溯源吗?

4

3 回答 3

17

答案实际上很简单,我只需要用引号括住电话。所以新的 Post-Build 任务是:

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

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

于 2013-10-21T14:43:25.093 回答
3

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

通用示例:

  <Exec Command="&quot;c:\Folder With Spaces\myfile.exe&quot;"/>  
于 2013-10-21T16:27:50.767 回答
0

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

Do:
D:\MyDetailsMuthuvelF\Project_Document\

Don't:
D:\My Details Muthuvel F\Project_Document\
于 2014-12-17T09:59:05.963 回答