2013-10-21 24 views
1

未能在Visual Studio 2012,我运行下面的生成后任务编译并结合自己的LESS文件:生成后任务在VS 2013

$(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:\用户\管理\文件\项目\ MedicalMission小号\ GMHC \ MSBuildSettingsLess.xml退出,代码9009

输出窗口显示以下内容:

1> 'C:\程序' 没有被识别为一个内部或外部的命令,
1>可操作程序或批处理文件。
1> C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets(4429,5):error MSB3073:命令“C:\ Program Files(x86)\ MSBuild \ 12.0 \ BIN \ msbuild.exe “C:\用户\管理\文件\项目\ MedicalMissions \ GMHC \ MSBuildSettingsLess.xml”

任何想法,为什么它是失败或如何获得它的底部

+0

同意。 “行情”。 – granadaCoder

回答

17

?答案其实很简单,我必须加上引号就调用所以新生成后的任务是:

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

看起来是向后兼容VS 2012以及。

+3

根本原因很简单,就是从VS2013开始MSBuild成为VS而不是.NET Framework的一部分。 VS路径包含空格,而.NET Framework路径没有。 http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of-visual-studio.aspx –

+1

@奥斯汀:你应该接受这个答案,即使它是由你自己。 – Oliver

+0

@Oliver好的电话,就这样。谢谢。 – Austin

3

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

通用示例:

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

这看起来非常丑陋,但确实有效。 – Thomas

0

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

Do: 
D:\MyDetailsMuthuvelF\Project_Document\ 

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