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

4
我想在不构建项目的情况下执行“后构建”事件。是否有办法做到这一点?

enter image description here


只需从开发人员命令提示符中运行相同的命令即可。 - Hans Passant
看了你的命令,如果你正在使用node.js,我认为https://www.visualstudio.com/vs/node-js/ Node.js工具可以帮助你正确设置开发环境。 - Siddharth Pandey
2个回答

3

启动开发者命令提示符:

  • 点击开始按钮。
  • 输入Developer Command Prompt并按ENTER键。

然后从Visual Studio中复制以下行:

  • 点击编辑Post-Build按钮。
  • $(ProjectDir)替换为实际项目路径。
  • 复制这些行。
  • 将这些行粘贴到命令提示符中,然后按ENTER键。

2
我建议将命令放入批处理文件中,然后在“Post Build Events”字段中运行该文件。您可以将其添加到解决方案中,然后从“Solution Explorer”中右键单击,“打开方式”,并添加一个名为Cmd的新项目:

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

这样,您就可以在将来从“Solution Explorer”中运行批处理文件了。更多详细信息请参见此处

Bat文件解决方案1

要么传入要运行的路径,要么依赖于%SolutionPath%(这是在从Visual Studio运行bat文件时提供的环境变量)。因此,此方法正在进行一些目录嗅探。(注意,下面的解决方案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文件的目录。

%SolutionPath% 是指 .sln 文件的路径,而不是解决方案文件夹的路径。 - montonero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接