roslyn项目配置

问题描述:

我正在使用Microsoft.CodeAnalysis和.MSBuild加载解决方案,它的项目和检索项目OutputFilePath。麻烦是调试和发布有不同的,我不能找出一种方法来切换解决方案配置。任何想法如何设置将使用哪种配置?roslyn项目配置

MSBuildWorkspace workspace = MSBuildWorkspace.Create(); 
workspace.LoadMetadataForReferencedProjects = true; 
Solution solution = workspace.OpenSolutionAsync("someSolution.sln").Result; 
foreach (Project project in solution.Projects) 
      Console.Out.WriteLine(project.OutputFilePath); 
workspace.CloseSolution(); 
+0

尝试传递一个字典与条目'{ “配置”, “调试”}'(或 “释放”)到'MSBuildWorkspace.Create()'方法。 –

+0

它的工作原理,谢谢! –

+0

很高兴帮助。我有/没有电脑来验证它。把它变成一个有更多信息的答案。 –

某些MSBuild属性(如通常的输出路径)取决于项目的构建配置。您在创建工作区时必须指定该配置。

例如:

var properties = new Dictionary<string, string> 
{ 
    { "Configuration", "Debug" } // Or "Release", or whatever is known to your projects. 
    // ... more properties that could influence your property, 
    // e.g. "Platform" ("x86", "AnyCPU", etc.) 
}; 

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); 
workspace.CloseSolution();