2

IProject インターフェイスまたは他の Roslyn インターフェイスから既定の名前空間設定を読み取る方法はありますか? プロジェクトのファイルを解析できることは知っていますが、これは Roslyn API を使用して可能だと思いますが、その方法が見つかりません。事前に情報をありがとう。

4

2 に答える 2

3

残念ながら、現時点では Roslyn はそれを行う方法を公開していませんが、最終的にはおそらく必要になるだろうということには同意します。

于 2013-02-28T16:11:49.927 に答える
1

Roslyn の後継と思われるライブラリ Microsoft.Build.Evaluation にはこの機能がありますが、見つけるのは簡単ではありません。

以下のコードを使用して、デフォルトの名前空間を取得します。

私のテストでは、.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 に答える