Share via


HOW TO:在單一方案中發行多個專案

一個方案可以包含數個專案,但 ClickOnce 部署已限制為同一時間只能發行一個專案。 對於包含許多專案的方案而言,逐一發行專案可能會相當麻煩。 本程序會說明如何使用巨集來發行方案內的所有專案,讓此程序自動化。

若要建立發行巨集

  1. 開啟 [巨集總管]。 從 [工具] 功能表中,按一下 [巨集],然後按一下 [巨集總管]。

  2. 建立新的巨集模組。 在 [巨集總管] 中,選取 [MyMacros] 節點。 從 [工具] 功能表中,按一下 [巨集],然後按一下 [新增巨集模組]。 將此模組命名為 PublishAllProjects。

  3. 在 [巨集總管] 中,開啟 [MyMacros] 節點,然後按兩下 [PublishAllProjects] 模組將它開啟 (或是從 [工具] 功能表上按一下 [巨集],然後按一下 [巨集 IDE])。

  4. 在 [巨集 IDE] 中,將下列程式碼加入該模組的 Import 陳述式之後:

    Public Module PublishAllProjects
        Sub PublishAllProjectsInSolution()
            ' Before using this macro, the certficate and security zone must be set.
            ' You can do this by publishing the projects using the VS IDE.
            Dim slnbld2 As SolutionBuild2 = CType(DTE.Solution.SolutionBuild, SolutionBuild2)
    
            'Save changes to all projects and clean.
            For Each proj As Project In DTE.Solution.Projects
                proj.Save()
            Next
            slnbld2.Clean(True)
    
            For Each proj As Project In DTE.Solution.Projects
                'Verify project is a windows application or console application before continuing
                Dim outputType As Integer = proj.Properties.Item("OutputType").Value
                If outputType <> 0 AndAlso outputType <> 1 Then
                    Continue For
                End If
    
                'GenerateManifests and SignManifests must always to true for publishing to work. 
                proj.Properties.Item("GenerateManifests").Value = True
                proj.Properties.Item("SignManifests").Value = True
                proj.Save()
    
                slnbld2.BuildProject(proj.ConfigurationManager.ActiveConfiguration.ConfigurationName, proj.UniqueName, True)
    
                'only publish if build was successful.
                If slnbld2.LastBuildInfo <> 0 Then
                    MsgBox("Build failed for " & proj.UniqueName)
                Else
                    slnbld2.PublishProject(proj.ConfigurationManager.ActiveConfiguration.ConfigurationName, proj.UniqueName, True)
                    If slnbld2.LastPublishInfo = 0 Then
                        MsgBox("Publish succeeded for " & proj.UniqueName)
                    Else
                        MsgBox("Publish failed for " & proj.UniqueName)
                    End If
                End If
            Next
    
        End Sub
    End Module
    
  5. 關閉 [巨集 IDE]。 焦點將回到 Visual Studio。

若要發行方案內的所有專案

  1. 建立 Visual Basic Windows 應用程式專案。 在 [檔案] 功能表上,按一下 [新增專案]。

  2. 在 [新增專案] 對話方塊中,從 [Visual Basic] 節點選取 [Windows 應用程式], 並將專案命名為 MultiProj。

  3. 再將兩個 Windows 應用程式專案加入到 MultiProj 方案中, 並將它們命名為 Proj1 和 Proj2。

  4. 先發行此方案內的每一個專案。 此巨集會要求簽署 ClickOnce 資訊清單,並為每個專案設定安全性區域 (Security Zone)。 在使用巨集前先使用整合式開發環境 (IDE) 發行每個專案,如此一來,發行程序將會簽署 ClickOnce 資訊清單,並設定安全性區域,這是執行巨集所需的步驟。

    在 [方案總管] 中,選取 MultiProj。 在 [專案] 功能表中,選取 [屬性]。 在 [專案設計工具] 中,按一下 [發行] 索引標籤。 在 [發行] 頁上,指定 publish\ 發行位置,然後按一下 [立即發行]。

    針對方案內的其他專案重複執行這個程序。

  5. 在 Visual Studio 命令視窗中叫用 (Invoke) 此巨集,再次發行 MultiProj。 若要檢視此命令視窗,請按一下 [檢視] 功能表上的 [其他視窗],然後按一下 [命令視窗] 或按 CTRL+ALT+A。 在 [命令視窗] 中輸入 macros,自動完成便會提供可用巨集的清單。 選取下列巨集,並按 Enter 鍵:

    Macros.MyMacros.PublishAllProjects.PublishAllProjectsInSolution

  6. 每個專案的發行程序成功之後,您都會收到指示「成功發行 MultiProj\MultiProj.vbproj」的訊息。請按一下每個訊息方塊中的 [確定]。

  7. 查看每個專案目錄內的發行子目錄, 您應該會看到資訊清單、setup.exe 和發行 Web 網頁等檔案。

請參閱

工作

HOW TO:編輯和以程式設計方式建立巨集

HOW TO:發行具有指定地區的專案

參考

巨集總管視窗

概念

發行 ClickOnce 應用程式

其他資源

巨集開發環境