【问题标题】:PostBuildEvent Create DirectoryPostBuildEvent 创建目录
【发布时间】:2012-05-09 01:37:55
【问题描述】:

我正在尝试在 Visual Studio 的 PostBuildEvent 中使用以下命令行在构建输出文件夹中创建一个名为 Design 的文件夹

mkdir $(TargetDir)Design  ....Runs Successfully but folder is not created
mkdir "$(TargetDir)Design" ....Runs Successfully but folder is not created
MD $(TargetDir)Design  ....Runs Successfully but folder is not created
MD "$(TargetDir)Design"  ....Runs Successfully but folder is not created

谁能告诉我我做错了什么

【问题讨论】:

  • 你的TargetDir有什么价值?
  • 它是保存在构建服务器中的输出的相对路径,例如 \\build\Sol Build\Build_1120943.7
  • 你的语法看起来不错。您可以尝试在您的mkdir 命令之后添加echo 语句作为健全性检查,以确保计算的路径在您认为的位置吗?
  • 当你说“运行成功”是什么意思?我解释一下,您看到编译器运行并且编译正确,但是您如何证明 postbuild 事件已运行?您是否在“Run Post-Build event”组合中设置了“Run Allways”?
  • 我让它在成功构建时运行。 postbuildevent 正在运行,因为还有其他命令行删除了一些文件并重命名了一些文件夹。但问题是创建一个新文件夹。

标签: c# visual-studio-2010 cmd post-build-event


【解决方案1】:

您需要执行以下操作:

if not exist DirToCreate mkdir DirToCreate

【讨论】:

  • 如果可能,请尝试通过一些解释等来详细说明您的答案。
  • 这是您在项目设置的“构建后事件”对话框中输入的示例。将您选择的目录替换为 DirToCreate。
【解决方案2】:

这对我有用(其中 Design 是您要创建的文件夹):

mkdir $(TargetDir)\Design

如果你想先检查是否存在:

if not exist $(TargetDir)\Design mkdir $(TargetDir)\Design

【讨论】:

  • 目录路径应该用双引号括起来,如下所示:如果不存在 "$(TargetDir)\Design" mkdir "$(TargetDir)\Design"
【解决方案3】:

除了前面的两个答案,您还可以使用这样的变量:

SET path=$(TargetDir)\Design
if not exist "%path%" mkdir "%path%"

这样,您将避免任何重复。 (用VS2019测试)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多