4

ソリューション全体のすべてのプロジェクトのビルド後のイベント/アクションを設定および/または変更する方法はありますか? 最大 50 個のプロジェクトを含むいくつかのソリューションがあり、2 つのプロジェクトを除いてすべて同じビルド後のアクションが必要です。新しいソリューションがある場合、または既存のソリューションのすべてのプロジェクトのビルド後のアクションを変更する必要がある場合、すべてのプロジェクト設定を実行し、[コンパイル] タブ ページに移動して、ビルド後のアクションを編集する必要があります。

ソリューション全体のビルド後のアクションを設定できる他のソリューションも高く評価されます。たぶんMS Buildですが、私はそこでの経験がありません...

Visual Studio 2012 および VB.Net プロジェクトでの作業。

4

3 に答える 3

1

複数の.csprojファイルを受信できる単純なアプリケーションと、ビルド後のアクションを貼り付けることができる単純な複数行のテキストボックスを作成できます。

したがって、1つのプロジェクトでポストビルドを編集します。メモ帳でプロジェクトファイルを開き、を探し<PostBuildEvent>...</PostBuildEvent>て複数行のテキストボックス内に貼り付け、すべてのプロジェクトファイルをループして、このxml要素を追加します。

ここに画像の説明を入力してください

于 2013-03-12T13:04:19.100 に答える
1

これは、VisualStudioマクロを使用して行います。

マクロエディタ(Alt+ F11)には、EvironmentEventsファイルがあります。
ここではBuildEvents_OnBuildProjConfigDoneイベントを使用します。
アセンブリを作業フォルダーにコピーするために、これを常に使用しています。

例:

Private targetPath As String = "C:\..."  

Private Sub BuildEvents_OnBuildProjConfigDone(ByVal ProjectName As String, ByVal ProjectConfig As String, ByVal Platform As String, ByVal SolutionConfig As String, ByVal Success As Boolean) Handles BuildEvents.OnBuildProjConfigDone
    On Error GoTo ext
    If Not Success Then Exit Sub

    'Absolute path to assembly
    Dim tar = targetPath
    Dim project As Project = DTE.Solution.Projects.Item(ProjectName)
    Dim projectFolder As String = Path.GetDirectoryName(project.FileName)
    Dim config As EnvDTE.Configuration = project.ConfigurationManager.ActiveConfiguration
    Dim outputPath As String = CStr(config.Properties.Item("OutputPath").Value)
    Dim assemblyName As String = CStr(project.Properties.Item("AssemblyName").Value)
    Dim assemblyFileName As String = CStr(project.Properties.Item("OutputFileName").Value)
    Dim src As String = Path.Combine(Path.Combine(projectFolder, outputPath), assemblyFileName)

    'Copy files to working folder
    On Error GoTo err
    Dim dst As String

    dst = Path.Combine(tar, assemblyFileName)
    DTE.ToolWindows.OutputWindow.ActivePane.OutputString(outTag + assemblyName + " -> " + dst + vbCrLf)
    File.Copy(src, dst, True)

    src = src.Substring(0, src.Length - 3) + "pdb"
    dst = dst.Substring(0, dst.Length - 3) + "pdb"
    DTE.ToolWindows.OutputWindow.ActivePane.OutputString(outTag + assemblyName + " -> " + dst + vbCrLf)
    File.Copy(src, dst, True)

    Exit Sub

err:
    DTE.ToolWindows.OutputWindow.ActivePane.OutputString(outTag + Err.Description + vbCrLf)
ext:
End Sub
于 2013-03-12T13:11:15.720 に答える
0

ソリューション エクスプローラーで複数のプロジェクトを選択し (Ctrl キーまたは Shift キーを押しながら選択)、すべてのプロジェクトを一度に変更できることをご存知ですか?

于 2013-03-13T02:54:11.627 に答える