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

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

谢谢!

有帮助吗?

解决方案

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

exit 0

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

其他提示

我使用的一个工作解决方案:

CD $(项目目录)

DoStuff.bat

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

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

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

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

这确实 不是 在 .bat 文件内工作:

echo "test" >>"test.txt"

确实有效 .bat 文件内:

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

视觉工作室 构建后事件命令行 这是:

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

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

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

编辑:看起来哈尔格林有它。

现在回到这个问题(不得不暂时转向其他问题)

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top