如何在不构建项目的情况下执行构建后事件?

时间:2018-01-04 16:18:22

标签: visual-studio

我想执行"构建后"没有建立项目的事件。 是否有选择以某种方式这样做?

enter image description here

2 个答案:

答案 0 :(得分:1)

启动Developer Command Prompt:

  • 点击开始按钮。
  • 键入开发人员命令提示符,然后按 ENTER

然后从Visual Studio复制行:

  • 点击修改后构建按钮。
  • --gen-object-api替换为项目的实际路径。
  • 复制这些行。
  • 在命令提示符中粘贴这些行,然后按 ENTER

答案 1 :(得分:1)

我建议将命令放入批处理文件中,然后在Post Build Events字段中运行THAT。

您可以将其添加到您的解决方案中,然后从解决方案资源管理器中,右键单击,"打开",并添加一个名为的新项目:

  • 姓名:Cmd
  • 命令:C:\ windows \ system32 \ cmd.exe
  • Args:/ c" $(ItemPath)"
  • 初始目录:$(ItemDir)

这将允许您将来从解决方案资源管理器运行批处理文件。 More details here

Bat文件解决方案1 ​​

传递路径以从中运行,或依赖于%SolutionPath%(这是从Visual Studio运行bat文件时提供的env var)。所以这个方法正在做一些目录嗅探。 (注意,下面的解决方案2可能更好 - 肯定更简单)

@echo off
if not [%1]==[] (set "ProjectDir=%1")
if not [%SolutionPath%]==[] (set "ProjectDir=%SolutionPath%\ProjectSubDirectory)
if [%ProjectDir%]==[] (
   echo Error, no Solution Path env var or ProjectDir provided
   exit /b
   goto :eof
)

cd /d %ProjectDir%
ng build

您的帖子构建事件将只运行$(ProjectDir)\MyBatchFile.bat "$(ProjectDir)"

Bat文件解决方案2

在相对于批处理文件位置的目录中运行(更简单的解决方案)。

@echo off
pushd "%dp0"
ng build
popd

在这种情况下,您的帖子构建事件将只是:$(ProjectDir)\MyBatchFile.bat,它将在同一目录中运行。为简单起见,我建议这种方法。

Pushd和popd类似于" CD"除了它是一个你可以弹出的堆栈。因此popd会将您返回到原始目录。 %dp0是当前正在执行的bat文件的目录。