为解决方案中的所有项目设置后期构建操作

时间:2013-03-12 12:53:12

标签: vb.net visual-studio visual-studio-2012 managed post-build-event

有没有办法在整个解决方案中为所有项目设置和/或更改后期构建事件/操作?我有一些解决方案,其中包含多达50个项目,除了2个项目外,它们都需要相同的后期构建操作。当我有一个新的解决方案或者我必须为现有解决方案的所有项目更改后期构建操作时,我必须运行所有项目设置,转到编译选项卡页面并编辑后期构建操作。

任何其他能够为整个解决方案设置后期构建操作的解决方案也将受到赞赏。也许MS Build但我没有经验...

使用Visual Studio 2012和VB.Net项目。

3 个答案:

答案 0 :(得分:1)

我使用Visual Studio宏执行此操作。

在宏编辑器( 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

答案 1 :(得分:0)

您可以创建一个可以接收多个.csproj文件的简单应用程序,以及一个简单的多行文本框,您可以在其中粘贴您的postbuild操作。

所以在1个项目中编辑后期构建。在记事本中打开项目文件,查找<PostBuildEvent>...</PostBuildEvent>并将其粘贴到多行文本框中,然后遍历所有项目文件并将这个xml元素添加到它们中。

enter image description here

答案 2 :(得分:0)

您是否知道可以在解决方案资源管理器中选择多个项目(使用Ctrl-pick或Shift-pick),然后一次更改所有项目?