有没有办法从IProject接口或任何其他Roslyn接口读取默认命名空间设置?我知道我可以解析项目的文件,但我认为这应该可以使用Roslyn API,但我找不到如何做到这一点。提前感谢您的信息。
答案 0 :(得分:3)
不幸的是,Roslyn目前还没有提供一种方法,但我同意这是我们最终可能需要的。
答案 1 :(得分:1)
库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;
}