首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在post-build事件中使用用户定义的变量?

如何在post-build事件中使用用户定义的变量?
EN

Stack Overflow用户
提问于 2014-01-20 01:15:06
回答 1查看 14.5K关注 0票数 8

我想在PostBuild event中使用局部变量,但我不知道如何在内部使用它。下面是我的构建后事件命令(param是可以通过msbuild /p开关传递的命名参数):

代码语言:javascript
复制
set fold=$(TargetDir)
if defined param (set fold=$(TargetDir)$(param)\)
if not exist "%fold%" md "%fold%"
copy /y "$(TargetPath)" "%fold%"

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

代码语言:javascript
复制
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),我会得到另一个结果,但它也是错误的:

代码语言:javascript
复制
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.

我哪里做错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-20 21:08:02

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21219926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档