我正在使用下面编写的代码..
EnvDTE.DTE dte = (EnvDTE.DTE)Marshal.GetActiveObject("VisualStudio.DTE.12.0");
dte.ExecuteCommand("File.SaveAll"); // Saving all files before building
dte.ExecuteCommand("Build.ReBuildSolution"); // Buidling solution
我只想在成功构建解决方案后才执行后续代码语句。 是否定义了任何通知成功/不成功构建的回调..
最佳答案
首先,如果您正在使用扩展(加载项或程序包),请不要使用这种获取 DTE 实例的方式,因为 Marshal.GetActiveObject(...) 返回 DTE 的运行实例,如果您打开两个 VS 实例,您可能会得到错误的实例。正确的做法是:
- 对于加载项:在 OnConnection 方法中传递的实例。
- 对于包:请参阅 HOWTO: Get an EnvDTE.DTE instance from a Visual Studio package .
二、看文章:HOWTO: Performing some action before or after a build from a Visual Studio macro or add-in
最好的方法是使用 IVsBuildableProjectCfg.AdviseBuildStatusCallback获取IVsBuildStatusCallback.BuildEnd的方法调用并检查 fSuccess 参数。
关于c# - Visual Studio Solution通过VS SDK获取Build后如何获取回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501883/