我正在编写一个Visual Studio扩展程序,可以编辑项目中特定类型的文件。该文件用作进一步自动化代码生成的描述(类似于Entity Framework)。
我需要在包含描述文件的项目构建之前执行代码生成。代码生成算法(目前)位于描述文件的编辑器中。
有没有一种方法来挂钩构建过程以在实际构建项目之前自动执行一些额外的步骤?
我正在编写一个Visual Studio扩展程序,可以编辑项目中特定类型的文件。该文件用作进一步自动化代码生成的描述(类似于Entity Framework)。
我需要在包含描述文件的项目构建之前执行代码生成。代码生成算法(目前)位于描述文件的编辑器中。
有没有一种方法来挂钩构建过程以在实际构建项目之前自动执行一些额外的步骤?
EnvDTE.Events.BuildEvents.OnBuildBegin
和OnBuildDone
。dte.Events.BuildEvents
时,您都会在幕后创建一个新的COM对象,即使您仍然有事件侦听器。因此,请将BuildEvents对象保存到成员变量中的某个位置,然后再将事件处理程序附加到它上面(以便在使用它时不会进行垃圾回收)。Microsoft.VisualStudio.Shell.Interop.IVsBuildStatusCallback
(并通过AdviseBuildStatusCallback
将其连接到VS中)。IVsUpdateSolutionEvents2
接口,以及其中的方法public int UpdateSolution_Begin(ref int pfCancelUpdate)
BeforeBuild
)和/或一个执行预处理的自定义构建任务可能是一个可行的解决方案。您的扩展可以修改项目文件以启用功能,就像PostSharp一样。 - Matze