传递给 MsBuild 的 Arg 在 PostBuildEvent 上未被识别
Arg passed to MsBuild not recognized on PostBuildEvent
我有一个要在我的 jenkins 服务器上编译的 csproj 文件,它包含一个构建后事件:
<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 = ""
.
您应该在 csproj
文件中以与其他 MSBuild 属性相同的方式定义 属性,例如 Configuration
或 Platform
<PropertyGroup>
...
<AAACOPYNEWONLY Condition=" '$(AAACOPYNEWONLY)' == '' ">NO</AAACOPYNEWONLY>
...
</PropertyGroup>
然后您就可以将它作为参数传递给 msbuild 命令行,例如-p:AAACOPYNEWONLY=NO
或 -p:AAACOPYNEWONLY=YES
我有一个要在我的 jenkins 服务器上编译的 csproj 文件,它包含一个构建后事件:
<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 = ""
.
您应该在 csproj
文件中以与其他 MSBuild 属性相同的方式定义 属性,例如 Configuration
或 Platform
<PropertyGroup>
...
<AAACOPYNEWONLY Condition=" '$(AAACOPYNEWONLY)' == '' ">NO</AAACOPYNEWONLY>
...
</PropertyGroup>
然后您就可以将它作为参数传递给 msbuild 命令行,例如-p:AAACOPYNEWONLY=NO
或 -p:AAACOPYNEWONLY=YES