2

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

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

谢谢!

4

5 回答 5

4

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

exit 0

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

于 2008-09-18T21:40:24.200 回答
2

我使用的一个可行的解决方案:

CD $(项目目录)

DoStuff.bat

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

于 2008-11-07T12:43:14.443 回答
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"
于 2008-10-03T14:31:46.320 回答
0

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

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

编辑:看起来 Hallgrim 有它。

于 2008-09-18T21:41:41.250 回答
0

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

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

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

于 2008-10-20T21:06:05.177 回答