【问题标题】:Disable Resharper's "Adjust namespace" for specific files对特定文件禁用 Resharper 的“调整命名空间”
【发布时间】:2015-09-08 00:07:03
【问题描述】:

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

使用// ReSharper disable once CheckNamespace,我可以禁用命名空间与文件位置不对应的提示。但是在重构项目命名空间时,仍然选择该类来调整命名空间。

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


更新示例:

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

所以 Resharper 总是希望将命名空间调整为 Com.xxxxx.Commons.Web.ViewsCom.xxxxx.Commons.Web 如果我禁用了 Views 文件夹的 namespace-provider-flag。

【问题讨论】:

    标签: c# visual-studio namespaces resharper


    【解决方案1】:

    ReSharper 的调整命名空间重构不再影响标有 // ReSharper disable CheckNamespace 的命名空间。 long-existing bug in ReSharper (@ulrichb 的旧答案中引用的链接) 已在 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 中,但命名空间更改实际上不会发生。这有点误导..

    【讨论】:

    • 我已经对此进行了测试,但没有看到您描述的行为。我的文件仍在调整其命名空间。
    • @Lopside 看起来我在 2018.1 上观察到了这种行为。问题跟踪器目前表示该错误在 2018.2 中重新出现,并在 2019.2 中得到修复。如果您在使用最新版本时仍有问题,或许可以向 JetBrains 报告。
    【解决方案2】:

    不幸的是,“调整命名空间”重构不尊重 disable CheckNamespace 是一个长期存在的 bug in R#。据我所知,没有其他方法可以从重构中排除特定文件。

    【讨论】:

    • 感谢您提供该错误的链接。您的答案现在已弃用。我发布了一个更新的答案,因为我认为这是正确的做法(see this meta post)。另外,我只是让你知道 ReSharper 已经修复了这个错误,以防你不知道。
    【解决方案3】:

    您可以通过打开要排除的文件夹的属性窗口(右键单击 -> 属性)并将 Namespace Provider 更改为 false 来禁用该文件夹作为 Namespace Provider。

    【讨论】:

    • 我知道这个“技巧”。不幸的是,如果命名空间与文件位置完全不同,这将不起作用。我用我的案例更新了问题。
    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 2012-02-21
    • 2015-07-11
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多