Сбой задачи после сборки в 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)


arrow_upward
17
arrow_downward

Ответ был на самом деле довольно прост, мне просто нужно было заключить вызов в кавычки. Итак, новая задача 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

arrow_upward
3
arrow_downward

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

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

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

arrow_upward
0
arrow_downward

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

Do:
D:\MyDetailsMuthuvelF\Project_Document\

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