在批处理文件中指定 VS 宏以在构建前或构建后运行

发布于 2024-11-28 18:06:26 字数 509 浏览 2 评论 0 原文

我可以在我的 pre & 中使用 VS 宏,例如 $(ProjectDir)构建后事件。但是有什么方法可以在批处理文件中指定它们吗?运行批处理文件作为我的 pre &构建后事件?

例如,

之前,

构建后事件

copy $(ProjectDir)foo.txt $(ProjectDir)\out\foo.txt

之后

构建后事件

CopyFoo.cmd

,其中包含CopyFoo.cmd

copy $(ProjectDir)foo.txt $(ProjectDir)\out\foo.txt

我想这样做以使我的构建事件列出更多用户- 易于编辑/更新。编辑批处理文件比在 VS 中编辑构建事件框要容易得多。

I can use the VS macros like $(ProjectDir) in my pre & post build events. But is there any way I can specify them in a batch file & run the batch file as my pre & post build event?

e.g.

Before

Post-Build event

copy $(ProjectDir)foo.txt $(ProjectDir)\out\foo.txt

After

Post-Build event

CopyFoo.cmd

where CopyFoo.cmd contains

copy $(ProjectDir)foo.txt $(ProjectDir)\out\foo.txt

I want to do this to make my build events list more user-friendly to edit/update. Editing a batch file is much easier than editing the build events box in VS.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

左秋 2024-12-05 18:06:26

不确定您是否可以访问它们(因为 $ 在批处理文件中具有不同的含义),但一种方法是将它们作为 批处理文件的命令行参数。您可以在批处理文件中以 %0 - %9 的形式访问它们。

构建后事件

CopyFoo.cmd $(ProjectDir)

批处理文件

copy %1foo.txt %1\out\foo.txt

Not sure if you can access them or not (becuase $ has a different meaning inside batch file), but one way would be to pass them as command line arguments to the batch file. You can access them inside the batch file as %0 - %9.

Post-Build event

CopyFoo.cmd $(ProjectDir)

Batch file

copy %1foo.txt %1\out\foo.txt
我不是你的备胎 2024-12-05 18:06:26

与最被接受的结果相比,我在这里提供了一种更直观的方法,特别是当你有很多宏想要使用时。

构建后事件

set ENV_ProjectDir=$(ProjectDir)
call CopyFoo.cmd

CopyFoo.cmd

copy %ENV_ProjectDir%\foo.txt %ENV_ProjectDir%\out\foo.txt

旁注:

  • (VS2022)我尝试使用“set ProjectDir=$(ProjectDir)”,但它会导致一些奇怪的构建错误我的 C# 项目。最好避免这种命名
  • (VS2022)预构建事件和后构建事件环境变量是分开的。看来你不能在预构建中定义并在构建后使用它

Compared to the most accepted result, I here provide with a more intuitive way, especially when you have many macro wanted to use.

Post-Build event

set ENV_ProjectDir=$(ProjectDir)
call CopyFoo.cmd

CopyFoo.cmd

copy %ENV_ProjectDir%\foo.txt %ENV_ProjectDir%\out\foo.txt

Side notes:

  • (VS2022) I tried to use "set ProjectDir=$(ProjectDir)", but it results in some strange build error for my C# project. Better avoid this naming
  • (VS2022) Pre-Build event and Post-Build event env var are seperated. It seems you cannot define in pre-build and use it in post-build
花海 2024-12-05 18:06:26

您是否尝试过在外部编辑器中编写命令并将结果复制到构建前/构建后事件框中。创建 .cmd 文件并传递参数听起来更复杂。

have you tried to just write the commands in an external editor and copy the result to the pre/post build event boxes. Creating .cmd files and passing around parameters sounds more complicated.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文