在Visual Studio .NET中自動化產生和配置(抄錄)

來源:互聯網
上載者:User
 

 

在Visual Studio .NET中自動化產生和配置

    摘要:本文介紹了如何使用 Microsoft Visual Studio .NET 自動化模型來自動化解決方案產生和項目產生以及組建組態。

    目錄

  A 解決方案和項目自動化產生模型對象

    B 控制組建組態

 

    B1)解決方案組建組態

 

    B2)項目組建組態

 

    C 啟動解決方案和項目的產生

 

     D 項目組建相依性

 

     E 定義啟動項目

 

     F 總結

    簡介

    在 Visual Studio .NET 中產生項目或解決方案時,需要按照與其相關聯的組建組態來產生。通常,您可以通過使用整合式開發環境 (IDE) 來手動產生解決方案或項目;但 Visual Studio .NET 自動化模型中包含的對象使您可以通過編程方式更改組建組態並完成組建操作。

    使用產生模型,您可以選擇要產生的項目並排除那些不需要產生的項目。另外,您還可以使用組建組態來確定產生所選項目的方式。在 Visual Studio 中可以定義兩種類型的組建組態:解決方案和項目。使用 SolutionBuild 對象,您可以通過編程方式來運行、調試和部署解決方案或選定的項目。

    對於建立無人看管的產生、自動化測試套件和批次工作而言,通過編程方式控制組建組態以及項目和解決方案的產生這一功能非常有用。另外,您還可以使用產生模型來完成下列工作:

    · 建立、啟用和刪除解決方案配置。

    · 產生、運行或部署解決方案配置中的任何項目或所有項目。

    · 擷取項目或解決方案配置內的對象的資訊。

    · 添加、刪除或擷取項目組建相依性的資訊。

    Visual Studio .NET 自動化模型中的解決方案和項目產生對象的大部分成員都能與 Visual Studio .NET IDE 中的命令對應起來。例如,SolutionBuild 對象包含的成員等同於 Build(產生)菜單中的命令:Build Solution(產生解決方案)、Rebuild Solution(重建解決方案)、Build Project(產生項目)和 Rebuild Project(重建項目),等等。

    有關解決方案和項目組建組態的工作原理,以及如何在 IDE 中進行設定的詳細資料,請參閱 Visual Studio 產品文檔中的  Builds During Application Development(英文)和 Build Configurations(英文)。

    解決方案和項目自動化產生模型對象

    Visual Studio .NET 自動化產生模型中的某些對象和集合使您可以修改解決方案和項目的組建組態以及依賴項,還可以通過編程方式啟動產生,這些對象和集合包括:

   

對象名稱

說明

BuildDependency 對象

表示產生主專案之前必鬚生成的項目。

BuildDependencies 集合

包含產生主專案之前必鬚生成的所有項目。

Configuration 對象

表示項目配置或產生設定集。例如,用於 .NET 平台的 Debug(調試)項目配置。

Configurations 集合

包含所有項目設定物件。

ConfigurationManager 對象

表示組建組態和平台。

OutputGroup 對象

包含由項目產生的檔案。

OutputGroups 集合

包含所有 OutputGroup 對象。

SolutionBuild 對象

用於產生、清除和部署當前處於活動狀態的解決方案配置。

SolutionConfiguration 對象

表示要產生的項目及其配置的列表。

SolutionConfigurations 集合

包含所有已定義的 SolutionConfiguration 對象。

SolutionContext 對象

表示 SolutionConfiguration 對象中每個項目的產生上下文。

SolutionContexts 集合

包含 SolutionConfiguration 對象中的所有 SolutionContext 對象(每個項目對應一個)。

    在 Visual Studio .NET 自動化模型中,對象和集合之間關係的階層如下所示:

    DTE

      SolutionBuild

            BuildDependencies

                  BuildDependency

      SolutionConfigurations

            SolutionConfiguration

                  SolutionContexts

                        SolutionContext

      Project

            ConfigurationManager

                  Configurations

                        Configuration

                              OutputGroups

                                    OutputGroup

    有關完整的 Visual Studio .NET 自動化模型的詳圖,請參閱  Visual Studio產品文檔中的 Automation Object Model Chart(英文)。

    有關可用配置和項目內容相關的資訊,請參閱  Configuration, Configuration Properties, Solution Property Pages Dialog Box(英文)。

    控制組建組態

    組建組態分為兩類:解決方案和項目。以下各節概要介紹如何通過編程方式建立和控制每種類型的配置。

    解決方案組建組態

    解決方案組建組態指定如何產生解決方案中的特定項目,以及如何部署這些項目(如果已啟用)。方案套件含兩種預設的組建組態:Debug(調試)和 Release(發布)。使用“Configuration Manager(組態管理員)”對話方塊,您可以建立解決方案配置、刪除配置或編輯現有配置。您也可以使用 SolutionConfiguration 對象通過編程方式來執行上述操作。下面的 VSMacro 樣本說明了實現上述操作的方法。

    Sub SolutionConfigurationExample()

       ' 將解決方案配置設定為 Release(發布)。

    Dim SolnCfg As SolutionConfiguration = DTE.Solution. _

     SolutionBuild.SolutionConfigurations.Item("Release")

   ' 去掉下一行中的注釋標記將刪除當前選定的配置。

   ' 注意:不能刪除最後一個解決方案配置。

   'SolnCfg.Delete()

   ' 建立新的基於現有 Debug(調試)組建組態的

   ' 解決方案配置。新的配置必須以現有配置為基礎。

   DTE.Solution.SolutionBuild.SolutionConfigurations.Add("NewSolnCfg", _

     "Debug", False)

   ' 啟用指定的解決方案配置,本樣本中為

   ' “NewSolnCfg”。

   SolnCfg = DTE.Solution.SolutionBuild.SolutionConfigurations. _

     Item("NewSolnCfg")

   SolnCfg.Activate()

End Sub

    解決方案上下文是顯示在解決方案的“Configuration Manager(組態管理員)”對話方塊中的一行設定,即:Project(項目)、Project Configuration(項目配置)、Platform(平台)以及是否產生。SolutionContext 對象表示這一行屬性值,SolutionContexts 集合包含該解決方案配置的所有行。

    以下樣本列出了“Debug(調試)”解決方案配置中每個項目的所有解決方案上下文值。

Sub SolnCtx()

   ' 選擇“Debug(調試)”解決方案配置。

   Dim SolnCfg As SolutionConfiguration = DTE.Solution. _

     SolutionBuild.SolutionConfigurations.Item("Debug")

   Dim SolnCtx As SolutionContext

   Dim SolnCtxs As SolutionContexts = SolnCfg.SolutionContexts

   Dim msg As String

   ' 列出解決方案中每個項目的解決方案上下文值。

   For Each SolnCtx In SolnCtxs

      msg = "項目名稱:" & SolnCtx.ProjectName & vbCr

      msg = msg & "配置名稱:" & SolnCtx.ConfigurationName & _

        vbCr

      msg = msg & "平台名稱:" & SolnCtx.PlatformName & vbCr

      msg = msg & "是否產生:" & SolnCtx.ShouldBuild & vbCr

      msg = msg & "是否部署:" & SolnCtx.ShouldDeploy & vbCr

      MsgBox(msg)

   Next

End Sub

    項目組建組態

    項目組建組態包括多組用於調試、產生、部署等的設定。這些配置設定列在“Project Property Pages(項目屬性頁面)”對話方塊中。通過在方案總管中用按右鍵某個項目並選擇“屬性”,便可以查閱這些設定。可用的項目配置名稱和平台名稱顯示在對話方塊頂部的下拉框中。

    對話方塊中的“Common Properties(公用屬性)”和“Configuration Properties(配置屬性)”節點列出了您可以更改的、所有可用的項目組建組態的屬性。例如,要查看或更改產生屬性,可以單擊 “Configuration Properties(配置屬性)”下的“Build(產生)”節點。更改設定並選擇“確定”後,該特定配置名稱和平台名稱的設定便被儲存下來。使用 Visual Studio .NET 自動化模型中的對象,您可以通過編程方式控制項目組建組態中的設定。

    有關組建組態的工作原理以及如何建立組建組態的詳細資料,請參閱 Default and Custom Builds(英文)。

    下面的 VSMacro 樣本示範了如何更改項目的組建組態中的設定的值。

Sub ProjConfig()

   ' 此樣本說明如何更改指定項目的組建組態中的

   ' “定義跟蹤常量”設定的布爾值。

   ' 此樣本要求有一個已載入的項目。

   Dim Proj As Project = DTE.VBProjects.Item(1)

   MsgBox("項目名稱:" & Proj.Name)

   MsgBox("要更改的項目配置屬性:" &    Proj. _

     ConfigurationManager.ActiveConfiguration.Properties.Item(3).Name)

   MsgBox("當前值:" & Proj.ConfigurationManager. _

     ActiveConfiguration.Properties.Item("DefineTrace").Value)

     Proj.ConfigurationManager.ActiveConfiguration.Properties.Item _

       ("DefineTrace").Value = True

   MsgBox("新值:" & Proj.ConfigurationManager. _

     ActiveConfiguration.Properties.Item("DefineTrace").Value)

End Sub

    控制項目配置屬性的另一種方法是使用 ConfigurationManager 對象。下面的樣本示範了如何執行此操作。

Sub CfgMgrExample()

   ' 此樣本說明如何使用 ConfigurationManager

   ' 對象來設定項目配置屬性。

   Dim Proj As Project = DTE.VBProjects.Item(1)

   Dim msg As String

   msg = "項目名稱:" & Proj.Name & vbCr

   msg = msg & "項目屬性名稱:" & Proj.ConfigurationManager. _

     Item(1).Properties.Item(1).Name & vbCr

   msg = msg & "項目屬性值:" & Proj.ConfigurationManager. _

     Item(1).Properties.Item(1).Value & vbCr

   MsgBox(msg)

   msg = ""

   Proj.ConfigurationManager.Item(1).Properties.Item(1).Value = False

   msg = "項目名稱:" & Proj.Name & vbCr

   msg = msg & "項目屬性名稱:" & Proj.ConfigurationManager. _

     Item(1).Properties.Item(1).Name & vbCr

   msg = msg & "項目屬性值:" & Proj.ConfigurationManager. _

     Item(1).Properties.Item(1).Value & vbCr

   MsgBox(msg)

End Sub

    啟動解決方案和項目的產生

    使用 Visual Studio .NET 自動化模型,您可以通過編程方式執行解決方案和項目的產生。實現此功能的主要對象是 SolutionBuild 對象。使用此對象可以:

    · 通過調用 SolutionBuild 對象的 Build 方法產生解決方案。

    · 通過調用 BuildProject 方法在解決方案中產生特定項目。

    · 通過調用 Debug 方法來啟動解決方案的“調試”產生。

    · 通過調用 Deploy 方法來部署解決方案中的某些項目。

    · 通過調用 Run 方法來執行指定的啟動項目。

    SolutionBuild 對象的各種屬性還允許您訪問:

    · 活動配置(即,產生解決方案時將會使用的當前解決方案配置)。

    · 組建相依性(即,哪些項目依靠其他項目才能正確產生)。

    · 產生狀態(即,產生是否在當前環境會話中已啟動過,產生當前是否進行中,或者產生是否已完成)。

    SolutionBuild 對象還包含 Clean 方法,調用此方法可以從項目(標記為在活動解決方案配置中產生)中刪除編譯器產生的支援檔案。此外,SolutionBuild 對象還具有其他屬性。要獲得完整列表,請參閱 SolutionBuild Object Properties, Methods, and Events(英文)。

    下面的樣本示範了如何啟動當前解決方案配置的產生。此樣本假定您的組建組態名為“MyBuildConfig”。

    Sub SolutionBuildExample()

  ' 組建活動解決方案配置。

  Dim sb As SolutionBuild = DTE.Solution.SolutionBuild

  sb.SolutionConfigurations.Item("MyBuildConfig").Activate

  sb.Build

End Sub

    下面的樣本示範了如何啟動解決方案中特定的項目及其依賴項的產生。此樣本假定您的組建組態名為“MyBuildConfig”,並且當前的方案套件含名為“ConsoleApplication1”的項目。

Sub ProjectBuildExample()

   ' 產生解決方案中指定的項目。

   Dim sb As SolutionBuild = DTE.Solution.SolutionBuild

   sb.BuildProject("MyBuildConfig", "ConsoleApplication1", False)

End Sub

    注意:WaitForBuildToFinish 標誌用於確定產生操作是否保留控制直至完成組建操作。預設值為 False。如果將 WaitForBuildToFinish 設定為 False(即控制在啟動產生操作後立即返回),則可以使用 BuildDone 事件來確定產生操作完成。

    項目組建相依性

    Visual Studio.NET 組建組態模型還允許您使用 BuildDependencies 屬性來定義兩個項目之間在產生上的依存關係。下面的樣本說明了如何使 Project1 依賴於 Project2,這樣,在產生解決方案時就必須先產生 Project2。

Sub BuildDependenciesExample()

   ' 使 Project 1 依賴於 Project 2。

   Dim p1 As Project = DTE.Solution.Item(1)  ' 項目 1

   Dim p2 As Project = DTE.Solution.Item(2)  ' 項目 2

   Dim sb As SolutionBuild = DTE.Solution.SolutionBuild

   sb.BuildDependencies.Item(p1.UniqueName).AddProject(p2.UniqueName)

End Sub

    定義啟動項目

    Startup Project(啟動項目)定義啟動 Visual Studio 調試器時要啟動並執行項目。您可以使用 SolutionBuild 對象的 StartupProjects 屬性通過編程方式來定義此設定。

    注意:目前的 Visual Studio .NET 版本中的 StartupProjects 集合只允許設定一個啟動項目,但將來的版本中將允許設定多個啟動項目。

    下面的樣本示範了如何查看和更改當前的啟動項目。

Sub StartUpProj()

   ' 此樣本要求解決方案中存在兩個項目。

   Dim sb As SolutionBuild = DTE.Solution.SolutionBuild

   Dim p1 As Project = DTE.Solution.Item(1)  ' 項目 1

   Dim p2 As Project = DTE.Solution.Item(2)  ' 項目 2

   MsgBox("當前啟動項目:" & sb.StartupProjects(0))

   ' 將啟動項目更改為另一個項目。

   sb.StartupProjects = p1.UniqueName

   MsgBox("新啟動項目:" & sb.StartupProjects(0))

End Sub

    總結

    Visual Studio .NET 自動化產生模型為通過編程方式控制解決方案和項目以及它們的組建組態提供了許多選項。要進一步瞭解 Visual Studio .NET 自動化產生模型與 IDE 之間的關係,請使用物件瀏覽器瀏覽“The Solution and Project Automation Build Model Objects”中列出的對象,並且將它們的成員與各對話方塊進行比較。練習使用模型,以便瞭解其工作原理。您還可以查閱 Visual Studio .NET 自動化樣本 Web 網站上的“PrePostBuildRules Add-In”樣本,網址為:http://msdn.microsoft.com/vstudio/nextgen/automation.asp(英文)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.