【问题标题】:VS 2008 Post Build Step funny businessVS 2008 Post Build Step 搞笑业务
【发布时间】:2010-09-10 23:11:11
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: visual-studio-2008 build-process


    【解决方案1】:

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

    exit 0
    

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

    【讨论】:

    • 虽然不是我最终使用的,但这确实解决了我发布的问题,并让我相信问题出在 JSMin 以及调用它的位置的交互上。想为您的回答表示赞赏。 (虽然有点晚了)
    【解决方案2】:

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

    CD $(项目目录)

    DoStuff.bat

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

    【讨论】:

    • 这对我有用,而 "$(ProjectDir)DoStuff.bat" 不起作用。这是因为在 DoStuff.bat 中我使用相对路径,并且调用“$(ProjectDir)DoStuff.bat”不会更改当前目录,因此当前目录保持在某个随机值并且路径指向错误的目的地。
    【解决方案3】:

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

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

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

    在 .bat 文件中起作用:

    echo "test" >>"test.txt"
    

    在 .bat 文件中有效

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

    Visual Studio 构建后事件命令行是这样的:

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

    【讨论】:

    • 调用 "C:\Temp\CompileTest\DoStuff.bat" 不会改变 Windows 当前目录,因此当前目录保持在某个随机值和 test.txt(这是当前目录的相对路径) 可能出现在那里。请参阅 Gustav 的解决方案。
    【解决方案4】:

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

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

    编辑:看起来 Hallgrim 有它。

    【讨论】:

      【解决方案5】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多