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;   
} 

是否有使用该解决方案配置Visual Studio中设置为防止一些项目是一个方法的功能建造?这个表格作出

solution configuration

的变化不影响.sln文件,并让我的功能不断创造一切

+0

对于我来说,只要我正在尝试构建的解决方案已经构建,此代码就会成功。即如果我用VS清理目标解决方案,那么我会得到一个失败结果。构建结果对象不包含任何异常或有用的信息,所以我仍然猜测clean会删除VS知道的一些必需的依赖项,但默认构建管理器不会。任何帮助/意见? –

回答

0

您可以使用配置管理器的新的解决方案配置。在这个新配置中,您只能选择需要构建的项目。

而对于使用该配置建立,你可以改变你的程序作为

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

New configuration using Configuration manager 希望这是你在找什么!

+0

我alreay做它,但它不起作用。解决方案构建配置不会保存到.sln文件中,我不知道如何阅读它们 – Doc

+0

Visual Studio实际上将解决方案的构建配置存储在解决方案文件本身中。如果您在文本编辑器中打开“* .sln”文件,则会有一个名为“GlobalSection(SolutionConfigurationPlatforms)”的部分。您是否看到本节中的新配置? –

+0

是的,但是我的脚本构建仅在我手动从解决方案中删除这些项目时才起作用......无法理解为什么 – Doc