2

有没有办法从 IProject 接口或任何其他 Roslyn 接口读取默认命名空间设置?我知道我可以解析项目的文件,但我认为这应该可以使用 Roslyn API,但我找不到如何做到这一点。提前感谢您的信息。

4

2 回答 2

3

不幸的是,Roslyn 目前没有公开这样做的方法,但我同意这是我们最终可能需要的东西。

于 2013-02-28T16:11:49.927 回答
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;
    }
于 2016-03-10T00:50:01.347 回答