gpt4 book ai didi

c# - 如何在构建后事件中使用用户定义的变量?

转载 作者:太空狗 更新时间:2023-10-29 20:39:26 26 4
gpt4 key购买 nike

我想在 PostBuild event 中使用局部变量,但我不明白如何在里面使用它。这是我的 Post-Build 事件命令(param 是可以通过 msbuild/p 开关传递的命名参数):

set fold=$(TargetDir)
if defined param (set fold=$(TargetDir)$(param)\)
if not exist "%fold%" md "%fold%"
copy /y "$(TargetPath)" "%fold%"

在构建解决方案时我得到:

msbuild PrePostBuildEvents.sln /p:param=ext

...

PostBuildEvent:
set fold=G:\prj\work\PrePostBuildEvents\bin\Debug\
if defined param (set fold=G:\prj\work\PrePostBuildEvents\bin\Debug\ext\)
if not exist "%fold%" md "%fold%"
copy /y "G:\prj\work\PrePostBuildEvents\bin\Debug\PrePostBuildEvents.dll" "%fold%"
The file cannot be copied onto itself.
0 file(s) copied.

如果我将 %fold% 更改为 $(fold),我会得到另一个结果,但它也是错误的:

PostBuildEvent:
set fold=G:\prj\work\PrePostBuildEvents\bin\Debug\
if defined param (set fold=G:\prj\work\PrePostBuildEvents\bin\Debug\ext\)
if not exist "" md ""
copy /y "G:\prj\work\PrePostBuildEvents\bin\Debug\PrePostBuildEvents.dll" ""
The filename, directory name, or volume label syntax is incorrect.
0 file(s) copied.

我做错了什么?

最佳答案

首先,使用 AfterBuild msbuild 目标而不是 PostBuild 事件。这将为 msbuild 提供更多关于您正在尝试做什么的信息,正确完成应该意味着更快的增量编译。

AfterBuild 事件中可以使用环境变量: http://msdn.microsoft.com/en-us/library/ms171459.aspx

理想情况下,一旦你运行了一次 msbuild,当你第二次运行它时,它应该不会跳过编译,也不会因为文件已经存在而费心去复制东西。

关于c# - 如何在构建后事件中使用用户定义的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com