0

나는 큰 솔루션 (100 개 + 프로젝트)빌드 솔루션

public static bool BuildSolution() 
{ 
    bool result = false; 
    try 
    { 
     string solutionPath = @"C:\path\to\my\solution.sln"; 

     ProjectCollection pc = new ProjectCollection(); 

     Dictionary<string, string> GlobalProperty = new Dictionary<string, string>(); 
     GlobalProperty.Add("Configuration", "Debug"); 
     GlobalProperty.Add("Platform", "Any CPU"); 
     GlobalProperty.Add("OutputPath", @"bin\Debug\"); 

     BuildParameters bp = new BuildParameters(pc); 
     BuildRequestData BuidlRequest = new BuildRequestData(solutionPath, GlobalProperty, "4.0", new string[] { "Build" },null); 
     BuildResult buildResult = BuildManager.DefaultBuildManager.Build(bp, BuidlRequest); 

     if (buildResult.OverallResult == BuildResultCode.Success) 
     { 
      result = true; 
     } 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine("Build Failed: " + e.ToString()); 
    } 
    return result;   
} 

로 몇 가지 프로젝트를 방지하기 위해 비주얼 스튜디오 내에서 설정 솔루션 구성을 사용하는 방법이 있나요를 구축 할 수있는 기능을 가지고 빌드? 이 양식에 만든

solution configuration

변화는의 .sln 파일에 영향을주지 않습니다 그래서 내 기능을 사용하여 구성 관리자를 사용하여 새 솔루션 구성을 만들 수있는 모든

+0

나를 위해이 코드는 빌드하려고하는 솔루션이 이미 구축 된 경우에만 성공합니다. 나는. VS로 대상 솔루션을 정리하면 오류가 발생합니다. 빌드 결과 객체에는 예외 나 유용한 정보가 없으므로 VS가 알고있는 필수 종속성을 깨끗하게 제거하지만 기본 빌드 관리자는 알지 못합니다. 어떤 도움/의견? –

답변

0

을 구축 유지. 이 새로운 구성에서는 빌드해야하는 프로젝트 만 선택할 수 있습니다.

그리고이 구성을 사용하여 구축

, 당신이 당신을 위해 무엇을 찾고있는

GlobalProperty.Add("Configuration", "NewConfigurationName"); 

New configuration using Configuration manager 희망으로 프로그램을 변경할 수 있습니다!

+0

나는 그것을 할 수는 있지만 작동하지 않습니다. 솔루션 빌드 구성은 .sln 파일에 저장되지 않고 읽는 방법을 모르겠습니다. – Doc

+0

Visual Studio는 실제로 솔루션의 빌드 구성을 솔루션 파일 자체에 저장합니다. 텍스트 편집기에서 "* .sln"파일을 열면 "GlobalSection (SolutionConfigurationPlatforms)"이라는 섹션이 있습니다. 이 섹션의 새로운 구성을 보시겠습니까? –

+0

예,하지만 필자는 수동으로 솔루션에서 해당 프로젝트를 제거한 경우에만 스크립트 빌드가 작동합니다 ... 이유를 이해할 수 없습니다 – Doc