C# 使用其解决方案配置以编程方式构建解决方案

C# 使用其解决方案配置以编程方式构建解决方案,c#,visual-studio-2012,build-process,projects-and-solutions,C#,Visual Studio 2012,Build Process,Projects And Solutions,我有一个构建大型解决方案的功能(100多个项目) publicstaticboolbuildsolution() { 布尔结果=假; 尝试 { 字符串solutionPath=@“C:\path\to\my\solution.sln”; ProjectCollection pc=新建ProjectCollection(); Dictionary GlobalProperty=新字典(); 添加(“配置”、“调试”); 添加(“平台”、“任何CPU”); 添加(“OutputPath”,@“bin

我有一个构建大型解决方案的功能(100多个项目)

publicstaticboolbuildsolution()
{
布尔结果=假;
尝试
{
字符串solutionPath=@“C:\path\to\my\solution.sln”;
ProjectCollection pc=新建ProjectCollection();
Dictionary GlobalProperty=新字典();
添加(“配置”、“调试”);
添加(“平台”、“任何CPU”);
添加(“OutputPath”,@“bin\Debug\”;
BuildParameters bp=新的BuildParameters(pc);
BuildRequestData BuildRequest=新的BuildRequestData(solutionPath,GlobalProperty,“4.0”,新字符串[]{“Build”},null);
BuildResult BuildResult=BuildManager.DefaultBuildManager.Build(bp,BuidlRequest);
if(buildResult.OverallResult==BuildResultCode.Success)
{
结果=真;
}
}
捕获(例外e)
{
WriteLine(“构建失败:+e.ToString());
}
返回结果;
}
有没有办法使用VisualStudio中的解决方案配置集来防止生成某些项目


在此表单上所做的更改不会影响.sln文件,因此我的功能保留生成所有内容

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

对于使用此配置的构建,您可以根据需要更改程序

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

希望这就是你想要的

我确实是这样做的,但是不起作用。解决方案生成配置未保存到.sln文件中,我不知道如何读取它们Visual Studio实际上将解决方案的生成配置存储在解决方案文件本身中。如果在文本编辑器中打开“*.sln”文件,则会出现一个名为“GlobalSection(SolutionConfigurationPlatform)”的部分。您看到本节中的新配置了吗?是的,但是我的脚本构建只有在我手动从解决方案中删除这些项目时才能工作。。。我不明白为什么,当且仅当我尝试构建的解决方案已经构建时,此代码才会成功。也就是说,如果我用VS清洗目标溶液,那么我会得到一个失败的结果。BuildResult对象不包含异常或有用信息,因此我猜测clean会删除VS知道但默认构建管理器不知道的一些必需依赖项。有什么帮助/意见吗?
GlobalProperty.Add("Configuration", "NewConfigurationName");