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

问题描述 投票:1回答:2

我想在不构建项目的情况下执行“Post-build”事件。有什么选择这样做吗?

enter image description here

visual-studio
2个回答
1
投票

启动Developer Command Prompt:

  • 单击开始按钮。
  • 键入Developer Command Prompt,然后按Enter。

然后从Visual Studio中复制行:

  • 单击Edit Post-Build按钮。
  • $(ProjectDir)替换为项目的实际路径。
  • 复制线条。
  • 在命令提示符中粘贴行,然后按ENTER键。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.