方法 : ソリューション内の複数のプロジェクトを発行する
ソリューションには複数のプロジェクトが存在する場合がありますが、ClickOnce 配置では、一度に発行できるプロジェクト数が 1 つに制限されています。 ソリューションに多数のプロジェクトが存在する場合、それらを 1 つずつ発行するのは手間のかかる作業です。 ここでは、ソリューション内のすべてのプロジェクトを発行するマクロを使って、このプロセスを自動化する方法を説明します。
発行マクロを作成するには
マクロ エクスプローラーを開きます。 [ツール] メニューの [マクロ] をクリックし、[マクロ エクスプローラー] をクリックします。
新しいマクロ モジュールを作成します。 マクロ エクスプローラーの [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" という名前を付けます。
MultiProj ソリューションに複数の Windows アプリケーション プロジェクトを追加します。 それぞれ、"Proj1"、"Proj2" のように名前を付けます。
まず、ソリューション内の各プロジェクトを発行します。 このマクロでは、ClickOnce のマニフェストが署名されていること、および、各プロジェクトに対してセキュリティ ゾーンが設定されていることが必要です。 マクロを使用する前に統合開発環境 (IDE) から各プロジェクトを発行しておくことで、ClickOnce のマニフェストが発行プロセスによって署名され、マクロの実行に必要なセキュリティ ゾーンが設定されます。
ソリューション エクスプローラーで MultiProj を選択します。 [プロジェクト] メニューの [プロパティ] をクリックします。 プロジェクト デザイナーの [発行] タブをクリックします。 [発行] ページで、発行場所として「publish\」を指定し、[今すぐ発行] をクリックします。
ソリューション内の他のプロジェクトについてもこの手順を繰り返します。
Visual Studio のコマンド ウィンドウでマクロを呼び出し、MultiProj をもう一度発行します。 コマンド ウィンドウを表示するには、[表示] メニューの [その他のウィンドウ] をクリックし、[コマンド ウィンドウ] をクリックするか、Ctrl キーと Alt キーを押しながら A キーを押します。 コマンド ウィンドウで「macros」と入力すると、使用可能なマクロがオートコンプリートによって一覧表示されます。 次のマクロを選択し、Enter キーを押します。
Macros.MyMacros.PublishAllProjects.PublishAllProjectsInSolution
各プロジェクトの発行プロセスが正常に完了すると、MultiProj\MultiProj.vbproj の発行に成功したことを示すメッセージが表示されます。 各メッセージ ボックスで、[OK] をクリックしてください。
各プロジェクト ディレクトリの publish サブディレクトリにアクセスします。 マニフェスト、setup.exe、発行 Web ページの各ファイルが確認できます。