2013-02-28 75 views
2

是否有方法從IProject接口或任何其他Roslyn接口讀取默認命名空間設置?我知道我可以解析項目的文件,但我認爲這應該可以使用Roslyn API,但我找不到如何做到這一點。預先感謝您的信息。通過Roslyn API讀取默認命名空間

回答

3

不幸的是,Roslyn目前沒有公開這樣做的方法,但我同意這是我們最終可能需要的。

0

庫Microsoft.Build.Evaluation,我相信,Roslyn的繼任者確實有這個功能,但它並不容易找到。

我使用下面的代碼來獲取默認名稱空間。

我的測試顯示它與存儲在.csproj文件中的RootNamespace相匹配。

 private string GetDefaultNamespace(Microsoft.Build.Evaluation.Project p) 
    { 
     string rtnVal = "UNKNOWN_NAMESPACE"; 

     foreach (ProjectItemDefinition def in p.ItemDefinitions.Values) 
     { 
      if (def.ItemType == "ProjectReference") 
      { 
       foreach(ProjectProperty prop in def.Project.AllEvaluatedProperties){ 
        if(prop.Name == "RootNamespace"){ 
         rtnVal = prop.EvaluatedValue; 
        } 
       } 
      } 
     } 

     return rtnVal; 
    }