我试图在Visual Studio 2010和Visual Studio 2012中执行此操作。如果我的Gruntfile.js文件位于项目的根目录中,我可以从post build事件命令行运行“grunt”命令运行没有问题。
grunt or grunt.cmd
但如果它在子目录中
$(ProjectDir)Public\grunt or $(ProjectDir)Public\grunt.cmd
它给了我这个错误
The command "c:\web\Public\grunt.cmd" exited with code 9009.
我一直在研究这个,但我找不到任何帮助。我确实在grunt文档中发现我需要使用“grunt.cmd”而不是仅仅调用“grunt”,但这对我没什么帮助。
答案 0 :(得分:13)
正在发生的事情是你为grunt指定一个确切的路径,它实际上不在$(ProjectDir)Public \中。当您在命令提示符下的该目录中键入grunt时,它会执行,因为您已将路径环境变量设置为包含grunt所在的目录。
幸运的是,VS中的post构建命令就像一个命令窗口,所以你可以把它放在你的构建命令中:
CD $(ProjectDir)Public\
grunt
这应该有效(假设定义了默认的grunt任务)。
答案 1 :(得分:3)
如果您打开Visual Studio,那么:
构建将失败,而#34;退出代码9009"信息。 (意思是"我不知道grunt命令是什么")
要解决这种情况,只需关闭visual studio并重新打开它(正如@longda在评论中提到的那样),一切都会正常工作。
我使用的是VS 2013 Premium和最新版本的npm / grunt。
答案 2 :(得分:3)
答案 3 :(得分:0)
有点相关,我有一个奇怪的问题,xcopy在grunt之后不能运行,运行它们作为单个命令修复它:
cd $(SolutionDir)..\App
grunt release && xcopy "$(SolutionDir)..\App\release" "$(TargetDir)Content\" /Y /E /S