2009-06-02 70 views
2

我知道您可以在项目级别具有事前和事后构建事件,但是我希望在解决方案构建的开始和结束时停止并启动服务 - 即当我做一个“构建解决方案”服务停止,构建的最后一个动作是重新启动服务。VS 2008中的解决方案级别构建事件

解决方案属性页面上没有生成事件,所以我该怎么做?

我猜我可以将任务添加到msbuild文件,但我恐怕不明白VS和msbuild之间的关系。 VS会用SLN文件执行msbuild吗?

回答

2

我写了一个宏为我自己的项目,我需要这个确切的功能:

您可以编写一个宏,这是否适合你。进入工具 - >宏IDE

一旦那里,EnvironmentEvents模块上双击并添加以下代码:

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin 
    If (Scope = EnvDTE.vsBuildScope.vsBuildScopeSolution) 
     //Do whatever solution independent stuff you need here. 
     If(DTE.Solution.FullName = "C:\My Solutions\Solution1.sln") 
      //Do whatever you need for Solution1.sln here. 
     End If 
    End If 
End Sub 

Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone 
    If (Scope = EnvDTE.vsBuildScope.vsBuildScopeSolution) 
     //Do whatever solution independent stuff you need here. 
     If(DTE.Solution.FullName = "C:\My Solutions\Solution1.sln") 
      //Do whatever you need for Solution1.sln here. 
     End If 
    End If 
End Sub 
+0

这看起来像它的解决方案独立。如果我构建*任何*解决方案将会触发 - 我说得对吗? – nickd

+0

我修改了代码,允许您根据解决方案的完整路径执行解决方案相关逻辑。请记住,1)我不是宏的主人,只是一个初学者,2)我需要使用宏,因为我不能使用MSBuild。 –

+1

我曾希望有一种解决方案,可以将它与.sln绑定,以便所有开发人员都可以将其作为构建的一部分进行提取。这似乎不可能,所以我很乐意使用这种方法。 – nickd

相关问题