次の方法で共有


方法 : ソリューション内の複数のプロジェクトを発行する

ソリューションには複数のプロジェクトが存在する場合がありますが、ClickOnce 配置では、一度に発行できるプロジェクト数が 1 つに制限されています。 ソリューションに多数のプロジェクトが存在する場合、それらを 1 つずつ発行するのは手間のかかる作業です。 ここでは、ソリューション内のすべてのプロジェクトを発行するマクロを使って、このプロセスを自動化する方法を説明します。

発行マクロを作成するには

  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. MultiProj ソリューションに複数の Windows アプリケーション プロジェクトを追加します。 それぞれ、"Proj1"、"Proj2" のように名前を付けます。

  4. まず、ソリューション内の各プロジェクトを発行します。 このマクロでは、ClickOnce のマニフェストが署名されていること、および、各プロジェクトに対してセキュリティ ゾーンが設定されていることが必要です。 マクロを使用する前に統合開発環境 (IDE) から各プロジェクトを発行しておくことで、ClickOnce のマニフェストが発行プロセスによって署名され、マクロの実行に必要なセキュリティ ゾーンが設定されます。

    ソリューション エクスプローラーで MultiProj を選択します。 [プロジェクト] メニューの [プロパティ] をクリックします。 プロジェクト デザイナーの [発行] タブをクリックします。 [発行] ページで、発行場所として「publish\」を指定し、[今すぐ発行] をクリックします。

    ソリューション内の他のプロジェクトについてもこの手順を繰り返します。

  5. Visual Studio のコマンド ウィンドウでマクロを呼び出し、MultiProj をもう一度発行します。 コマンド ウィンドウを表示するには、[表示] メニューの [その他のウィンドウ] をクリックし、[コマンド ウィンドウ] をクリックするか、Ctrl キーと Alt キーを押しながら A キーを押します。 コマンド ウィンドウで「macros」と入力すると、使用可能なマクロがオートコンプリートによって一覧表示されます。 次のマクロを選択し、Enter キーを押します。

    Macros.MyMacros.PublishAllProjects.PublishAllProjectsInSolution

  6. 各プロジェクトの発行プロセスが正常に完了すると、MultiProj\MultiProj.vbproj の発行に成功したことを示すメッセージが表示されます。 各メッセージ ボックスで、[OK] をクリックしてください。

  7. 各プロジェクト ディレクトリの publish サブディレクトリにアクセスします。 マニフェスト、setup.exe、発行 Web ページの各ファイルが確認できます。

参照

処理手順

方法: マクロを編集および手入力で作成する

方法 : 特定のロケールを持つプロジェクトを発行する

参照

[マクロ エクスプローラー] ウィンドウ

その他の技術情報

ClickOnce アプリケーションの発行

マクロ開発環境