如何获得项目csproj的默认命名空间(VS 2008)

Kiq*_*net 9 namespaces projects-and-solutions csproj visual-studio-2008

我有VS 2008和csproj项目(C#Library).

在项目的属性中,具有程序集名称和默认名称空间.注意:每个类都有一个名称空间.

是否有可能在运行时获取默认命名空间的值?

我的目标是使用资源,我需要默认命名空间的值:

 Assembly assembly = Assembly.GetExecutingAssembly();

 //foreach (string resourceName in assembly.GetManifestResourceNames()){}

 Stream syntaxModeStream = assembly.GetManifestResourceStream(pathToResources
+ ".SyntaxModes.xml");
Run Code Online (Sandbox Code Playgroud)

更新:

彼得说我做不到.默认命名空间不存储在程序集中

var resource = assembly.GetManifestResourceNames().Single(p => p.EndsWith(".SyntaxModes.Xml"))
Run Code Online (Sandbox Code Playgroud)

存储的默认命名空间在哪里?

我只能使用Addins Visual Studio(DTE对象)阅读?

Pie*_*kel 16

你不能.

默认命名空间不存储在程序集中的任何位置.它只是Visual Studio的项目设置.

我倾向于使用程序集的名称:Assembly.GetName().Name.这个问题是它只有在程序集名称没有改变时才有效.

对于您的特定问题,您可以使用assembly.GetManifestResourceNames()并对这些名称进行一些测试,例如:

string name = assembly.GetManifestResourceNames().Single(p => p.EndsWith(".SyntaxModes.Xml"))
Run Code Online (Sandbox Code Playgroud)


zov*_*zov 5

不是100%确定它是你正在寻找的,但你可以使用以下命令获取命名空间:

this.GetType().Namespace
Run Code Online (Sandbox Code Playgroud)