当前位置:首页> 正文

VS 2008 Post Build Step有趣的事情

VS 2008 Post Build Step有趣的事情

VS 2008 Post Build Step funny business

好的,这是我的项目的分解:我有一个带有"脚本"子文件夹的Web项目。该文件夹包含一些javascript文件和JSMin.exe的副本,以及在其中一些文件上运行JSMin.exe的批处理文件。我试图设置一个后构建步骤"调用" $(ProjectDir)Scripts \ jsmin.bat""。当我执行构建时,批处理文件始终"以代码1退出"。通过Visual Studio或msbuild命令行会发生这种情况。我可以从Scripts文件夹中手动运行该批处理文件,它似乎可以按预期运行,所以我不确定这里的问题是什么。 $(ProjectDir)Scripts \ jsmin.bat调用用引号引起来,因为$(ProjectDir)可以有空格(实际上在我的机器上也有)。我目前不确定该怎么办。我已经尝试在批处理后步骤中删除批处理文件的内容,但这似乎也不起作用。

理想情况下,我想通过后期或预构建步骤解决此问题,以使构建管理器在部署代码时不必执行额外的步骤。

谢谢!


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

1
exit 0

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


为此,我使用的工作解决方案:

光盘$(ProjectDir)

DoStuff.bat

无需调用命令或其他任何命令,当然,如果您的项目目录中有该文件,则当然不需要。


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

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

示例:名为DoStuff.bat的批处理文件使用echo命令来附加文本文件。

在.bat文件中不起作用:

1
echo"test">>"test.txt"

这确实在.bat文件中起作用:

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

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

1
call"C:\\Temp\\CompileTest\\DoStuff.bat"

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

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

但是,一切并没有丢失,另一位开发人员将我的注意力转向了YUI Compressor及其在.NET中的实现。通过一些手动的.csproj操纵,我能够实现自己的目标,然后达到某些目标(包括CSS压缩)!


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

在构建后,您是否尝试过直接运行脚本(即不通过JSMin.bat)?

编辑:看起来哈格里姆拥有它。


展开全文阅读

相关内容