如何在Visual Studio post build事件中使用msbuild?

时间:2014-11-23 14:43:47

标签: visual-studio-2010 post-build-event yui-compressor

我正在尝试在Visual Studio项目中配置YUICompressor.NET

据我所知,我必须创建一个.proj文件并将其添加到我的解决方案中。之后,我需要创建一个构建后的事件来构建这个.proj文件,然后我会得到我想要的输出(缩小的js / css文件)。

所以,我有:

visual studio solution explorer

此.proj包含:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">

  <UsingTask TaskName="CssCompressorTask" AssemblyFile="\..\packages\YUICompressor.NET.MSBuild.2.7.0.0\lib\NET20\Yahoo.Yui.Compressor.Build.MsBuild.dll" />
  <UsingTask TaskName="JavaScriptCompressorTask" AssemblyFile="\..\packages\YUICompressor.NET.MSBuild.2.7.0.0\lib\NET20\Yahoo.Yui.Compressor.Build.MsBuild.dll" />

  <Target Name="Minify">

    <ItemGroup>
      <!-- Single files, listed in order of dependency -->
      <CssFiles Include="Content\*.css"/>
      <JavaScriptFiles Include="Scripts\*.js"/>      
    </ItemGroup>

    <CssCompressorTask
          SourceFiles="@(CssFiles)"
          OutputFile="Content\min.css"
       />

    <JavaScriptCompressorTask
          SourceFiles="@(JavaScriptFiles)"
          OutputFile="Scripts\min.js"
       />

  </Target>
</Project>

我正在尝试将其构建如下:

enter image description here

我收到以下错误:

The command "msbuild C:\Users\Me\Desktop\MvcApplicationExample\MvcApplicationExample\YuiCompressorMsBuild.proj" exited with code 9009.

此错误表明“msbuild”不是有效命令。那么,我该如何构建这种类型的项目呢? (我已经按照本教程:youtube

感谢您的帮助。

3 个答案:

答案 0 :(得分:22)

正如您所说,Visual Studio可能无法找到MSBuild命令,请尝试使用以下命令

"$(MSBuildBinPath)\msbuild.exe"

使用msbuild的完整路径。

更新(对于期货参考)

作为comment by Steve Medley,你不应该忘记封装引号。

答案 1 :(得分:4)

vfabre使用$(MSBuildBinPath)\ msbuild.exe是正确的,但遗漏了一件事。你应该将它封装在引号中,因为99.99%的时间是msbuild文件路径中的空格

答案 2 :(得分:1)

嗯,有一件事可能是一个问题,就是你想要它作为一个Post-build事件,但它是为Pre-build命令行设置的。