Сбой задачи после сборки в VS 2013

В Visual Studio 2012 я выполнял следующую задачу Post-Build для компиляции и объединения моих файлов 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\Projects\MedicalMissions\ GMHC\MSBuildSettingsLess.xml"

Любая идея, почему это терпит неудачу или как добраться до сути?


person Austin    schedule 21.10.2013    source источник


Ответы (3)


Ответ был на самом деле довольно прост, мне просто нужно было заключить вызов в кавычки. Итак, новая задача Post-Build:

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

Похоже, он также обратно совместим с VS 2012.

person Austin    schedule 21.10.2013
comment
Основная причина заключается просто в том, что, начиная с VS2013, MSBuild становится частью VS, а не .NET Framework. Путь VS содержит пробелы, а путь .NET Framework — нет. blogs.msdn.com/b/visualstudio/archive/2013/07/24/ - person Lex Li; 22.10.2013
comment
@Austin: Вы должны принять этот ответ, даже если вы сами. - person Oliver; 17.12.2013
comment
@Oliver Хороший звонок, только что сделал. Спасибо. - person Austin; 18.12.2013
comment
Работал и для меня. - person Raghav; 28.10.2016

Вам могут понадобиться кавычки в файле определения msbuild (.proj).

Общий пример:

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

У меня возникла та же проблема, но я использую место в папке. Решение работает, когда я удаляю пробел.

Do:
D:\MyDetailsMuthuvelF\Project_Document\

Don't:
D:\My Details Muthuvel F\Project_Document\
person muthuvel    schedule 17.12.2014