如何使用 roslyn 获取项目的默认命名空间?

How get default namespace of project with roslyn?

我有一个 C# 项目。我已将 NameSpaceDeclarationSyntax 例如 namespace1 重命名为 namespace2 。 当我用 visual studio 和 roslyn api 编译这个项目时,我发现 visual studio 已经将项目的所有资源嵌入到 namespace2 中,只是属性文件夹中的资源文件嵌入了项目的默认命名空间.

我已经使用 roslyn 嵌入了带有 namespace2 的所有资源,因此它不会 运行。

抛出了以下异常:

Couldn't find any resources appropriate for specified culture or the neutral culture. Make sure namespace1.properties.Resources.resources was correctly embedded or linked into assembly "assemblyname" ...

我必须更改项目的默认命名空间或获取默认命名空间并将其嵌入但我不知道如何查找或更改项目的默认命名空间?

默认命名空间是 MSBuild 的 属性 和 Visual Studio,而不是编译器本身。因此,您不会在 Roslyn API.

中找到它

相反,您可以直接在项目文件中更改 <RootNamespace> 元素。

您可以看到 Roslyn 的 Visual Studio 层如何获得默认命名空间 here