【问题标题】:assistance with post build event command协助后期构建事件命令
【发布时间】:2012-12-08 03:33:14
【问题描述】:

我将以下内容用作构建后事件:

FOR %%a in ($(ProjectDir)$(OutDir)MyLibrary.*.dll) DO CALL :package %%~na

:package 
"$(SolutionDir)\..\..\..\Packages\NuGet.exe" pack "$(SolutionDir)%1\%1.csproj" -o "$(SolutionDir)\..\..\..\Packages"

上面的功能是在一个文件夹中找到所有MyLibrary dll,并从中创建一个nuget包。有 5 个文件与搜索 MyLibrary.*.dll 匹配。但是只创建了一个包 - 找到的第一个文件。

任何人都看到上面的任何问题,为什么它只创建一个包而不是 5。是否存在语法错误?

【问题讨论】:

    标签: batch-file msbuild command nuget post-build-event


    【解决方案1】:

    您在 NuGet 行之后缺少 goto :eof 调用;这表示:package 函数的结束。因此,循环正在调用函数,但函数永远不会返回循环。

    FOR %%a in ($(ProjectDir)$(OutDir)MyLibrary.*.dll) DO CALL :package %%~na
    goto End
    
    :package 
    "$(SolutionDir)\..\..\..\Packages\NuGet.exe" pack "$(SolutionDir)%1\%1.csproj" -o "$(SolutionDir)\..\..\..\Packages"
    goto :eof
    
    :End
    

    【讨论】:

    • 我觉得for语句后面也应该有goto :eof,否则循环后:package代码会再次运行,但是参数不同……
    • @mousio 正确,还应该有一个 goto 来传递函数,这样它就不会再次运行,或者一个 goto :eof 到那时结束脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多