如何不在生成的命名空间中包含 Visual Studio 项目文件夹名称

Posted

技术标签:

【中文标题】如何不在生成的命名空间中包含 Visual Studio 项目文件夹名称【英文标题】:How to NOT include Visual Studio Project folder names in generated namespaces 【发布时间】:2010-10-04 23:18:59 【问题描述】:

如何防止 VS 项目中解决方案文件夹的名称附加到为添加到解决方案文件夹的新项目生成的命名空间中?

示例:VS 解决方案中的 C# 项目 C# 项目属性中设置的默认命名空间:“BigClient.Domain”

如果您在此项目中创建一个名为“MySpecialStuff”的解决方案文件夹,然后将一个新类添加到“MySpecialStuff”解决方案文件夹中,VS 将创建具有“BigClient.Domain.MySpecialStuff”命名空间的新 .cs 文件。我想要找到一种方法让新添加的类的命名空间只保留“BigClient.Domain”的“项目级”命名空间,而不是 VS 将“MySpecialStuff”解决方案文件夹名称附加到命名空间。

我似乎记得有人读过一篇博客文章,说这是可能的(通过 VS 中的选项/设置或注册表设置),但我不记得现在在哪里或如何想要它:)

如果答案 = 对于不同的 VS 版本不同,我的平台是 VS 2008。

【问题讨论】:

这一直是我永远的烦恼。 注意:这里提到的不是解决方案文件夹。它们是项目中的文件夹。解决方案文件夹是解决方案中的文件夹,但不在任何项目中。 非常正确——很好。已更新标题以反映这一(重要的)区别。 我知道这已经得到解答,但是如果您在解决方案资源管理器中选择文件夹,然后选择属性,设置 Namespace Provider = False 【参考方案1】:

如果您安装了 ReSharper,请在目录设置 (F4) 上,将 Namespace Provider 设置为 false。

【讨论】:

似乎在任何地方都看不到——你的意思是 VS 中解决方案文件夹本身的属性?仅列出的属性是“文件夹名称”(当然,它是文件夹本身的名称) 啊,没关系。我猜这是一个 ReSharper 设置,不是 Visual Studio 内置的 我已将其设置为文件夹,但仍将新文件的命名空间包含在该目录中。【参考方案2】:

制作新的类模板或更改 Visual Studio 的类模板。有关如何执行此操作,请参阅 MSDN 文档。在模板文件中,您很快就会看到插入“安全”命名空间名称的行。

【讨论】:

我不确定这是如何被接受的答案。它没有回答 OP 的原始问题。 msdn.microsoft.com/en-us/library/eehb4faa%28VS.80%29.aspx 列出了所有内置模板参数,并且似乎只有 on 参数 $rootnamespace$ 与命名空间有任何关系,并且 $rootnamespace$ 似乎总是包含要添加的文件的文件夹名称进入。这是 OP 希望消除的。 我知道这已经得到解答,但是如果您在解决方案资源管理器中选择文件夹,然后选择属性,设置 Namespace Provider = False @Yoopergeek: $safeitemrootname$ |输入到“添加新项目”对话框中的安全文件名(不带扩展名)。对于多文件模板,这是从 .vstemplate 处理的当前模板项的安全文件名。 @MarkDavis,仅适用于安装了 Resharper。

以上是关于如何不在生成的命名空间中包含 Visual Studio 项目文件夹名称的主要内容,如果未能解决你的问题,请参考以下文章

如何子类化和重新实现命名空间中包含的类?

XML 元素名称中包含的 XSLT 命名空间 URI

在C ++命名空间中包含旧库

直接在 node.js 中包含文件

如何在Visual Studio中包含路径?

如何在 Visual Studio 中包含子目录?