为特定文件禁用 Resharper 的 "Adjust namespace"

Disable Resharper's "Adjust namespace" for specific files

我有一个 class 的命名空间与项目的文件夹结构不匹配。

使用 // ReSharper disable once CheckNamespace 我可以禁用命名空间与文件位置不对应的提示。但是Refactoring the Projects namespaces时,仍然选择class来调整namespace。

有没有办法禁用调整命名空间?


样本更新:

在我的例子中,我有一个视图 class 必须位于 System.Web.Mvc- 命名空间中。 文件位置是[Root]>src>Views Root-Project 的默认命名空间是 Com.xxxxx.Commons.Web

所以Resharper总是想将命名空间调整为 Com.xxxxx.Commons.Web.ViewsCom.xxxxx.Commons.Web 如果我禁用 Views 文件夹的名称空间提供程序标志。

您可以通过打开要排除的文件夹的属性 window(右键单击 -> 属性)并将命名空间提供程序更改为 false 来禁用该文件夹作为命名空间提供程序。

不幸的是,bug in R# disable CheckNamespace 没有受到 "Adjust namespaces" 重构的尊重。据我所知,没有其他方法可以从此重构中排除特定文件。

ReSharper 的 Adjust 命名空间重构不再影响标有 // ReSharper disable CheckNamespace 的命名空间。 long-existing bug in ReSharper (@ulrichb 的旧答案中引用的link) 已在 ReSharper 2016.2 中修复。


限制(目前,截至 ReSharper 2018.1)

  • 如果根本没有命名空间,即使为该文件指定了 disable CheckNamespace,ReSharper 也会自动添加命名空间。

例如,这个有效:

// ReSharper disable once CheckNamespace
namespace DoNotAdjustThisNamespace
{
    public class TestClass1
    {
    }
}

然而,这不是:

// ReSharper disable once CheckNamespace
public class TestClass1
{
}
  • 仍然存在误导性 UI 问题,即所有文件仍出现在 Adjust 命名空间 UI 中,但实际上不会发生命名空间更改。这有点误导..