VS 2008 Post Build步骤有趣的业务

时间:2008-09-18 21:34:28

标签: visual-studio-2008 build-process

好的,这是我项目的细分:我有一个带有“Scripts”子文件夹的web项目。该文件夹包含一些javascript文件和JSMin.exe的副本以及在一些文件上运行JSMin.exe的批处理文件。我试图建立一个'call'$(ProjectDir)Scripts \ jsmin.bat“'的构建后步骤。当我执行构建时,批处理文件始终“退出代码1”。这通过Visual Studio或通过msbuild命令行进行。我可以从Scripts文件夹手动运行批处理文件,它似乎按预期工作,所以我不知道这里的问题是什么。 $(ProjectDir)Scripts \ jsmin.bat调用是引号,因为$(ProjectDir)可能有空格(实际上在我的机器上)。我不知道此时该做什么。我已经尝试删除批处理文件的内容作为后期构建步骤,但这似乎也不起作用。

理想情况下,我想通过post或pre-build步骤来解决这个问题,这样构建管理器在部署代码时就不必经过额外的步骤。

谢谢!

5 个答案:

答案 0 :(得分:4)

如果您的自定义构建步骤中有某些内容返回错误代码,则可以添加:

exit 0

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

答案 1 :(得分:2)

我使用的工作溶剂:

CD $(ProjectDir)

DoStuff.bat

不需要调用命令或其他任何内容,当然,如果您在项目目录中有该文件,那么这就是

答案 2 :(得分: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"

答案 3 :(得分:0)

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

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

编辑:看起来Hallgrim有它。

答案 4 :(得分:0)

现在回到这个问题(不得不转移到其他火上)

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

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