2009-06-02 72 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

相關問題