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

问题描述 投票:0回答:2

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

我已经用 roslyn 嵌入了带有命名空间2的所有资源,因此它无法运行。

抛出以下异常:

找不到任何适合特定文化或中立文化的资源。确保namespace1.properties.Resources.resources正确嵌入或链接到程序集“程序集名称”中...

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

c# namespaces roslyn
2个回答
2
投票

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

相反,您可以直接在项目文件中更改

<RootNamespace>
元素。

您可以在此处了解 Roslyn 的 Visual Studio 层如何获取默认命名空间。


0
投票

要获取默认命名空间,您可以使用以下代码:

context.Options.AnalyzerConfigOptionsProvider.GlobalOptions.TryGetValue(MatchFolderAndNamespaceConstants.RootNamespaceOption, out var rootNamespace);

就像在

AbstractMatchFolderAndNamespaceDiagnosticAnalyzer.cs
Roslyn 分析器存储库中使用的那样这里

MatchFolderAndNamespaceConstants
课程您可以在这里找到。

© www.soinside.com 2019 - 2024. All rights reserved.