【问题标题】:C# pre-build event doesn't appear to be expanding macro symbols?C# pre-build 事件似乎没有扩展宏符号?
【发布时间】:2015-08-10 02:01:12
【问题描述】:

我有一个 C# 项目,在 Pre-Build 事件中有以下行:

复制 "(RSSDK_DIR)\bin\win32\libpxccpp2c.dll" "($OutDir)" /Y

RSSDK_DIR 是环境变量,$OutDir 是公认的宏符号。我正在尝试将给定的 DLL 从第一个目录复制到输出目录。

当我构建项目时出现错误:

Error   1   The command "copy "(RSSDK_DIR)\bin\win32\libpxccpp2c.dll" "($OutDir)" /Y" exited with code 1.   

我在 C++ 项目中完成了类似的任务,并且效果很好。此外,您可以在“输出”窗口中看到构建事件触发时正在运行的实际命令完全展开。在这种情况下,对于我的 C# 项目,它似乎没有扩展环境变量或宏符号。我已经阅读了其他关于像这样复制文件的 SO 帖子,我的版本似乎与我所看到的相同。

我怎样才能让它工作?是否有任何 IDE 设置或工具来帮助调试它?

【问题讨论】:

  • 我更新的答案对你有用吗???
  • @jmelosegui 不,它没有,我现在没有时间在这方面投入更多精力。我确实赞成您的答案,因为我发现它很有用,但由于我仍然遇到问题,我没有将其标记为已接受的答案。

标签: c# visual-studio-2013 pre-build-event


【解决方案1】:

试试这个,对于特定的宏变量,正确的语法是 $(OutDir) 而不是 ($OutDir)

对于环境变量,您必须使用 %variable% 语法,但由于 % 是 MSBuild 中的保留字符,您需要将其替换为 %25。

这对我也不起作用,但好消息是您可以对环境变量使用相同的语法。

所以你的命令应该像这样工作

copy "$(RSSDK_DIR)\bin\win32\libpxccpp2c.dll" "$(OutDir)" /Y

请注意,Visual Studio 内部的$(OutDir) 是一个虚拟路径,根据您要执行的操作,您应该考虑改用$(TargetDir)

【讨论】:

  • 谢谢,但我确实看到了有关该问题的 MSDN 文章(%25 而不是 %),但它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 2015-08-18
  • 2021-01-06
  • 1970-01-01
  • 2020-12-30
相关资源
最近更新 更多