2008-09-18 48 views
2

好的,这里是我的项目的细目:我有一个“脚本”子文件夹的Web项目。该文件夹包含一些JavaScript文件和JSMin.exe的副本,以及在一些文件上运行JSMin.exe的批处理文件。我尝试设置一个'call'$(ProjectDir)Scripts \ jsmin.bat“'的后期构建步骤。当我执行构建时,批处理文件始终“用代码1退出”。这发生在Visual Studio或通过msbuild命令行。我可以从Scripts文件夹手动运行批处理文件,它看起来像预期的那样工作,所以我不确定这里的问题是什么。 $(ProjectDir)Scripts \ jsmin.bat调用在引号中,因为$(ProjectDir)可能有空格(事实上在我的机器上)。我不确定此时该做什么。我尝试删除批处理文件的内容作为后构建步骤,但似乎也不工作。VS 2008发布步骤有趣的业务

理想情况下,我想通过发布或预构建步骤解决此问题,以便构建管理器在部署代码时不必经过额外的步骤。

谢谢!

回答

4

如果你在你的自定义生成步骤返回错误代码的东西,你可以添加:

exit 0 

作为构建步骤的最后一行。这将停止构建失败。

+0

+1谢谢,你的回答对我也有帮助:o) – Andrew 2008-12-07 21:41:23

+0

虽然不是我最终使用的结果,但它确实超过了我发布的问题,并导致我相信错在JSMin和它的交互被叫来。想给你信用的答案。 (尽管有点晚) – sdanna 2009-01-22 21:01:54

0

不知何故,我不熟悉.bat文件如何退出的具体细节,但是JSMin或批处理文件执行正在以非零返回码退出。

您是否尝试过直接运行脚本(即不通过JSMin.bat)作为后期构建的一部分?

编辑:看起来Hallgrim有它。

1

您的脚本或批处理文件是否在内部使用任何路径引用?

我发现如果路径引用不完全合格,批处理文件将无法正常工作。

示例:调用DoStuff.bat一个批处理文件使用echo命令追加一个文本文件。

这确实.bat文件里面没有工作:

echo "test" >>"test.txt" 

确实工作 .bat文件里面:

echo "test" >>"C:\Temp\CompileTest\test.txt" 

在Visual Studio 生成后事件命令是这样的:

call "C:\Temp\CompileTest\DoStuff.bat" 
+0

调用“C:\ Temp \ CompileTest \ DoStuff.bat”不会更改Windows当前目录,所以当前dir停留在某个随机值并且test.txt(它是当前目录的相对路径)可能会出现在那里。查看古斯塔夫的解决方案。 – 2009-06-12 14:11:29

0

现在回到这个问题(不得不进入其他火灾)

@Jonathan Webb - 我尝试了一些想法,但没有成功。事实上,我知道我们在其他内部项目中正在做类似的事情(使用后期制作任务调用外部程序)。我倾向于认为它是与jsmin.exe工具的一些交互或我的一些其他愚蠢的错误。

然而,所有的都没有丢失,另一位开发人员将我的注意力转向YUI压缩机及其implementation in .NET。通过一些手动的.csproj操作,我能够实现我的目标,然后一些(包括CSS压缩)!

2

对于这一点,我使用的是工作sollution:

CD $(PROJECTDIR)

DoStuff.bat

没有呼叫需要的命令或其他任何东西,这当然如果你有文件在您的项目目录中。