传递给MsBuild的Arg在PostBuildEvent上无法识别

问题描述 投票:0回答:1

我有一个要在我的jenkins服务器上编译的csproj文件,它包含一个postbuild-event:

<PostBuildEvent>
    IF NOT DEFINED AAACOPYNEWONLY GOTO :EOF

    IF "%25AAACOPYNEWONLY%25" == "yes" (
        SET NEWOPT=/D
    ) ELSE (
        SET NEWOPT=
        RMDIR /S /Q "$(Outdir)\..\schema"
    )

    XCOPY /E /Y /I /Q %25NEWOPT%25 $(ProjectDir)..\schema "$(Outdir)\..\Schema"
</PostBuildEvent>

当我在Windows中将AAACOPYNEWONLY定义为系统环境变量时,一切正常,并且schema文件夹被复制到ProjectDir所指的位置。

但是当我直接在对msbuild的调用中提供变量时,不会创建该文件夹:

msbuild MyProject.csproj -t:ReBuild -p:AAACOPYNEWONLY=NO

[我也扫描了我的日志文件,但是没有什么迹象表明xcopy甚至已运行,这使我认为条件IF NOT DEFINED AAACOPYNEWONLY不匹配。

为什么将变量作为arg提供给msbuild时,为什么变量未正确传递到事件中?

编辑:我简化了我的postbuild,只打印变量的内容:

<PostBuildEvent>
    echo AAACOPYNEWONLY = "%25AAACOPYNEWONLY%25"
</PostBuildEvent>

仅打印AAACOPYNEWONLY = ""

jenkins msbuild post-build-event
1个回答
0
投票
您应该以与csprojConfiguration相同的方式在Platform文件中定义属性,例如

<AAACOPYNEWONLY Condition=" '$(AAACOPYNEWONLY)' == '' ">NO</AAACOPYNEWONLY>

© www.soinside.com 2019 - 2024. All rights reserved.