2017-04-19 24 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