好的,这是我项目的细分:我有一个带有“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步骤来解决这个问题,这样构建管理器在部署代码时就不必经过额外的步骤。
谢谢!
答案 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压缩)!