多个程序集中的相同命名空间是一种好习惯吗?

Same namespace in multiple assemblies is a good practice?

我有一个跨多个程序集的命名空间。 Resharper 警告命名空间与文件位置不对应。

这是一种不好的做法吗?使用与文件位置对应的命名空间更好吗?

在我的具体情况下,我有两个程序集:一个由某些平台共享的便携式 Class 库,然后是每个平台(UWP、桌面等)的特定程序集

命名空间为 MyCompany.I18N,专用于本地化服务。

大部分代码都在 PCL 中,但我需要编写一些特定于平台的代码。

在UWP案例中,我需要使用XAML函数,所以我创建了一个UWP程序集。我认为 MyCompany.I18N 命名空间可以,因为它是原始 I18N 命名空间的扩展,但 Resharper 认为这不是一个好的样式。

我需要移动到 MyCompany.XAML.I18N 命名空间吗?这对我来说似乎更令人困惑。在这些情况下,通常的做法是什么?

文件布局与代码中的命名空间相匹配是一个非常普遍的约定。这使事物在逻辑上由文件夹和命名空间分开。 ReSharper 通过在不匹配时警告您来利用它 - 这通常表示命名空间不正确,或者文件位于错误的位置。

如果不适合你,不遵守完全可以。您可以通过更改 Alt+Enter 菜单中的检查严重性并将其设置为 "Do not show" 来禁用警告(您甚至可以保存这到团队共享设置并将其签入源代码管理,并逐个解决方案应用它)。

此外,您可以为特定文件夹禁用它。在 Visual Studio、select 解决方案资源管理器中的一个文件夹,然后右键单击并显示属性。然后将 "Namespace Provider" 设置更改为 false。 ReSharper 不会将该文件夹视为预期命名空间的一部分。 help page.

中有更多详细信息