将Visual Studio项目编译为预提交的git钩子

问题描述

是否有一种创建git pre-commit钩子的方法,该钩子将尝试以几种配置编译我正在提交的Visual Studio项目,然后仅在所有编译成功后才允许提交?

我对如何编写一个预提交的钩子有了一个大致的了解,但这全是bash,所以我不确定是否可以使其运行我猜测的MSBuild.exe我的项目的配置。

解决方法

这比我预期的要简单得多。就我而言,我想在x64平台上同时运行调试和发布配置。

#!/bin/bash

MSBuild="path\to\MSBuild.exe"

if ! exec "$MSBuild" VulkanRT.sln -t:build -p:Configuration=Debug -p:Platform=x64 | grep -q "Build succeeded."
then
    echo "Debug build failed!"
    exit 1
elif ! exec "$MSBuild" VulkanRT.sln -t:build -p:Configuration=Debug -p:Platform=x64 | grep -q "Build succeeded."
then
    echo "Release build failed!"
    exit 1
fi

echo "Release and debug build succeeded!"
exit 0

请注意,这仅适用于构建时间较短的小型项目,除非您可以等待较长的构建时间。