2017-04-19 28 views
0

我想弄清楚在相应的构建配置/平台设置中启用/禁用哪个项目。我在哪里可以找到这个“project.BuildsInCurrentConfiguration”信息?Roslyn - 确定从构建配置中排除的项目

var properties = new Dictionary<string, string> 
{ 
    { "Configuration", "Debug" }, 
    { "Platform", "x86"} 
}; 

MSBuildWorkspace workspace = MSBuildWorkspace.Create(properties); 
workspace.LoadMetadataForReferencedProjects = true; 
Solution solution = workspace.OpenSolutionAsync("someSolution.sln").Result; 
foreach (Project project in solution.Projects) 
      Console.Out.WriteLine($"{project.OutputFilePath} is enabled in this build setup: {project.BuildsInCurrentConfiguration}"); 
workspace.CloseSolution(); 

我本来以为我不会提供不属于拿起配置/平台的一部分的项目,但solution.Projects显示我所有的人,无论构建设置。

回答

0

我不认为罗斯林现在真的拥有大部分信息(我不知道它是否会,但我希望它会)。例如,我没有看到与使用Roslyn API的项目的“配置”相关的任何内容。这似乎被委派给DTE接口。你可以在一个罗斯林项目平台类型,所以在概念上,你只能得到一个适用于特定类型的建设项目:

var rolsynProjects = solution.Projects 
    .Where(p => p.CompilationOptions.Platform == Platform.X86); 

但是,像“调试”配置似乎只通过DTE可用 - 这并不难。例如

var project = DTE.Solution.Projects 
    .Where(p=>p.FullName == rolsynProjects.First().FilePath).FirstOrDefault(); 

,并从该项目的VS,你可以在它的ConfigurationManager