2017-04-19 5 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が実際にその情報の大部分を今は持っているとは思わない(私はそれがこれでいいかどうかはわかりませんが、私はそう望みます)。たとえば、Roslyn APIを使ったプロジェクトの「設定」に関連するものは何も表示されません。これはDTEインターフェイスに委任されているようです。あなたはロザリンプロジェクトにおけるプラットフォームの種類で取得することができますので、概念的にあなただけのビルドの特定のタイプに適用されるプロジェクト得ることができます:

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

しかし、「DEBUG」の設定のようなものが唯一のDTE経由で利用可能であるように見えるが - それを得るのは難しいことではありません。例えば

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

そして、そのVSプロジェクトから、あなたはそのConfigurationManager

で取得することができます
関連する問題