2017-04-13 82 views
1

我正在使用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

很高興幫助。我有/沒有電腦來驗證它。把它變成一個有更多信息的答案。 –

回答

1

某些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();