HOW TO:在單一方案中發行多個專案
更新:2007 年 11 月
一個方案可以包含數個專案,但 ClickOnce 部署已限制為同一時間只能發行一個專案。對於包含許多專案的方案而言,逐一發行專案可能會相當麻煩。本程序會說明如何使用巨集來發行方案內的所有專案,讓此程序自動化。
若要建立發行巨集
開啟 [巨集總管]。從 [工具] 功能表中,按一下 [巨集],然後按一下 [巨集總管]。
建立新的巨集模組。在 [巨集總管] 中,選取 [MyMacros] 節點。從 [工具] 功能表中,按一下 [巨集],然後按一下 [新增巨集模組]。將此模組命名為 PublishAllProjects。
在 [巨集總管] 中,開啟 [MyMacros] 節點,然後按兩下 [PublishAllProjects] 模組將它開啟 (或是從 [工具] 功能表上按一下 [巨集],然後按一下 [巨集 IDE])。
在 [巨集 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
關閉 [巨集 IDE]。焦點將回到 Visual Studio。
若要發行方案內的所有專案
建立 Visual Basic Windows 應用程式專案。在 [檔案] 功能表上,按一下 [新增專案]。
在 [新增專案] 對話方塊中,從 [Visual Basic] 節點選取 [Windows 應用程式],並將專案命名為 MultiProj。
再將兩個 Windows 應用程式專案加入到 MultiProj 方案中,並將它們命名為 Proj1 和 Proj2。
先發行此方案內的每一個專案。此巨集會要求簽署 ClickOnce 資訊清單,並為每個專案設定安全性區域 (Security Zone)。在使用巨集前先使用整合式開發環境 (IDE) 發行每個專案,如此一來,發行程序將會簽署 ClickOnce 資訊清單,並設定安全性區域,這是執行巨集所需的步驟。
在 [方案總管] 中,選取 MultiProj。在 [專案] 功能表中,選取 [屬性]。在 [專案設計工具] 中,按一下 [發行] 索引標籤。在 [發行] 頁上,指定 publish\ 發行位置,然後按一下 [立即發行]。
針對方案內的其他專案重複執行這個程序。
在 Visual Studio 命令視窗中叫用 (Invoke) 此巨集,再次發行 MultiProj。若要檢視此命令視窗,請按一下 [檢視] 功能表上的 [其他視窗],然後按一下 [命令視窗] 或按 CTRL+ALT+A。在 [命令視窗] 中輸入 macros,自動完成便會提供可用巨集的清單。選取下列巨集,並按 Enter 鍵:
Macros.MyMacros.PublishAllProjects.PublishAllProjectsInSolution
每個專案的發行程序成功之後,都會收到指示「成功發行 MultiProj\MultiProj.vbproj」的訊息,請在每個訊息方塊上按一下 [確定]。
查看每個專案目錄內的發行子目錄,您應該會看到資訊清單、setup.exe 和發行 Web 網頁等檔案。