VS 2008中的解决方案级构建事件

3

我知道你可以在项目级别上设置构建前后事件,但我想在解决方案的构建开始和结束时停止和启动一个服务 - 即当我执行“构建解决方案”时,服务将停止并且构建的最后一个操作是重新启动服务。

解决方案属性页面上没有构建事件,那我该怎么办?

我猜我可以在msbuild文件中添加任务,但我不太了解VS和msbuild之间的关系。VS是否使用SLN文件执行msbuild?

1个回答

4

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

您可以编写一个宏来为您执行此操作。转到工具 -> 宏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

那看起来是与解决方案无关的。如果我构建任何解决方案,它都会触发 - 我是对的吗? - nickd
我已经修改了代码,使您可以根据解决方案的完整路径执行解决方案相关逻辑。请记住:1)我不是宏的专家,只是一个初学者;2)我需要使用宏,因为我无法使用MSBuild。 - Praveen Angyan
1
我曾希望有一个解决方案,可以将其与 .sln 关联起来,以便所有开发人员都可以在构建过程中使用。但这似乎不可能,所以我很高兴采用这种方法。 - nickd

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