2

전체 솔루션의 모든 프로젝트에 대한 빌드 빌드 이벤트/작업을 설정 및/또는 변경하는 방법이 있습니까? 나는 2 개의 프로젝트를 제외하고 모두 같은 포스트 빌드 액션이 필요한 최대 50 개의 프로젝트가 포함 된 솔루션을 가지고 있습니다. 새로운 솔루션이 있거나 기존 솔루션의 모든 프로젝트에 대한 빌드 빌드 작업을 변경해야 할 때 모든 프로젝트 설정을 실행하고 컴파일 탭 페이지로 이동하여 게시 빌드 작업을 편집해야합니다.솔루션의 모든 프로젝트에 대한 빌드 후 조치 설정

전체 솔루션에 대해 빌드 빌드 작업을 설정할 수있는 다른 솔루션도 감사하겠습니다. 어쩌면 MS 빌드하지만 거기에 아무 경험이 ...

Visual Studio 2012 및 VB.Net 프로젝트로 작업.

답변

0

여러 개의 .csproj 파일을받을 수있는 간단한 응용 프로그램과 작성 후 작업을 붙여 넣을 수있는 간단한 여러 줄 텍스트 상자를 만들 수 있습니다.

그래서 1 개의 프로젝트에서 포스트 빌드를 편집하십시오. 메모장에서 프로젝트 파일을 열어 <PostBuildEvent>...</PostBuildEvent>을 찾고 여러 줄 텍스트 상자에 붙여 넣은 다음 모든 프로젝트 파일을 반복하고이 xml 요소를 추가하십시오.

enter image description here

+0

우리는 이것에 대해서도 생각했지만 Visual Studio에 내재되어있는 것을 찾고 있으므로 이와 같은 일을하기 위해 별도의 추가 응용 프로그램이 필요하지 않습니다. – wdumon

+0

Ok thats fair :) –

1

나는 비주얼 스튜디오 매크로를 사용하여이 작업을 수행. 매크로 편집기 (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 
+0

분명히 매크로 편집기는 Visual Studio 2012에서 제거되었습니다. 일부는 추가 기능을 사용하여 동일한 동작을 얻으려는 제안이 있는데,이 제안을 통해 살펴 보겠습니다. – wdumon

+0

이것은 위와 같은 일을하기 위해 앞으로 내 자신의 VS 애드 인을 작성해야한다는 것을 의미합니까? – joe

+0

나는 그렇다고 생각한다. 나는 지금이 문제에 대해 더 깊이 파고 들지는 않았지만 "VS2012의 매크로 편집기"를 검색하면 추가 기능을 사용하는 예제가됩니다. – wdumon

0

는 당신이 솔루션 탐색기에서 여러 프로젝트를 선택할 수 있습니다 알고 있습니다, 다음 번에 모든 프로젝트를 변경합니다 (Ctrl-선택 또는 Shift-선택 사용)?

+0

선택할 수는 있지만 선택할 수는 없습니다. 속성 창에서 '컴파일'탭 페이지에있는 게시물 빌드 이벤트에 대한 액세스 권한을 얻으십시오. 여러 프로젝트를 선택하고 속성 창을 여는 것은 모두 '프로젝트 파일'과 '프로젝트 폴더'입니다. – wdumon

+0

죄송합니다, 내 대답은 C++ 프로젝트에만 적용됩니다. –

관련 문제