15

如果文件中的元素涉及与源树中的文件夹不直接对应的 URL,ReSharper 7.1.1 代码检查会错误地将文件中<location>的元素报告为冗余。web.config如果您使用的是 ASP.NET MVC 或 Web API,则 URL 路径不直接对应于任何特定的物理文件夹是正常的。

如果您运行解决方案范围的检查,您会收到两个警告,我已经能够禁用其中一个,但我不知道如何禁用第二个。

第一个是“冗余位置元素”警告。ReSharper 淡出整个位置部分。这是它会淡出的示例:

<location path="FederationMetadata">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

如果您通过 ACS 使用联合登录,并且您希望为此提供元数据端点,则需要此配置。但是不会有这个名字对应的路径。

(严格来说,这与 MVC 或 Web API 无关。我给出了这个示例,因为它很常见。但是,我的项目也有几个<location>元素对应于通过 MVC 和 Web API 路由配置处理的路径,它们具有同样的问题。根本原因似乎是相同的:ReSharper 在项目中看不到与此位置对应的任何内容,因此它错误地得出结论认为它是错误的。它影响 MVC 和 Web API 控制器,以及任何路径由于模块等原因可用。)

摆脱第一个警告很容易:您可以在“检查严重性”设置中将其关闭。

然后你会得到第二个警告:“位置元素未使用:在 FederationMetadata 中找不到项目项目”(以及每个具有相应<location>元素的控制器的类似警告)。

这个仅出现在您检查整个解决方案时出现的“检查结果”面板中。当您查看源文件本身时,通常不会出现任何检查小部件。奇怪的是,这个似乎没有被禁用的选项。

我知道您可以右键单击并选择“隐藏...”(尽管这似乎认为这是一个“冗余位置”问题,我已经在设置中禁用了该问题),但据我所知,隐藏检查结果在我的机器上是本地的。我想配置团队共享点设置,以便它不会在任何地方显示此警告。

我的目标是为所有用户提供干净的检查结果,而不是让每个用户隐藏结果。Resharper 虚假地报告了这个问题 -web.config很好,只是 R# 误解了它。有谁知道我怎样才能使第二个警告消失?(或者,更好的是,有什么方法可以让 R# 能够知道这些“隐藏”位置确实存在?)

4

3 回答 3

10

我刚刚添加了这个:

  <!-- ReSharper disable WebConfig.RedundantLocationTag -->
  <!-- ReSharper disable WebConfig.WebConfigPathWarning -->
  <location path="api">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <!-- ReSharper restore WebConfig.RedundantLocationTag -->
  <!-- ReSharper restore WebConfig.WebConfigPathWarning -->
于 2014-07-09T19:34:43.470 回答
1

您可以更改 R# 设置,使其不在您的计算机本地。

  1. 在VS中,点击RESHARPER菜单,然后点击Manage Options...
  2. 双击该team-shared项目(应该是中间的,介于This computer和之间personal)。

通过在此处更改设置,它将[ProjectName].csproj.DotSettings在您的项目中创建一个文件。如果您将此文件签入源代码管理,这些设置将与在项目上开发的其他 R# 用户共享。AFAIK,您可以更改的任何设置(例如,告诉 R# 检查严重性应该不同于默认设置),您应该能够添加到团队共享设置中。

至于您的 web.config 错误,我对 R# 有更大的不满,因为启用它后,我会在 web.config 和 app.config 文件上丢失智能感知。您可能可以告诉 R# 忽略以下错误,但我不确定它是否是您正在寻找的解决方案,因为它将忽略 web.config 文件的所有 R# 问题。

  1. 双击编辑您的team-shared设置(如上所述)后,单击左侧菜单Settings下的项目。Code Inspection
  2. 单击Edit Items to Skip button
  3. 在 下Files and folders to skip when analysing,单击Add File...
  4. 导航到您的 web.config 文件并添加它。

这告诉 R# 在分析时忽略整个 web.config 文件。同样,不确定这是否是您想要的解决方案,但它可能会抑制您看到的错误建议。

更新(回复评论)

实际上,您可以从 VS 上下文菜单中更改检查选项。当Inspection Options对话框出现单选按钮 ( Do not show- Error) 时,会有一个Save To按钮。单击该按钮将设置保存到团队共享的 DotSettings。

于 2013-03-27T12:06:10.740 回答
0

这似乎有两个部分:

  1. 配置 Web 路径是处理这两个错误的最佳方法
  2. 显然,您必须DotSettings.user手动将设置从文件中移到共享团队文件中

如果单击有问题的路径属性(将插入符号放在属性值中),然后等待 R# 弹出窗口出现,它的菜单应该提供一种创建“路径映射”或编辑现有映射的方法地点。您可以使用它来告诉 R# 对应于路径的实际文件在哪里。或者,由于在这种情况下没有这样的文件,您可以将操作设置为忽略此路径。

有了这个,上面提到的任何警告都不会出现。

不幸的是,路径映射对话框(如过滤器问题对话框)是其中之一,只有“保存”按钮,没有“保存到”按钮,无法控制设置的去向。实际上,它们似乎最终出现在<project>.DotSettings.userWeb 项目的文件中。

但事实证明,如果您在文本编辑器中打开该文件,从那里剪切设置,然后将它们粘贴到您的团队共享解决方案设置中,那么它只适用于文件。这似乎以一种适用于项目中每个人的方式消除了这两个警告。

(您应该能够对“过滤器问题”设置使用类似的技巧,尽管您需要查看不同的位置。这些最终会出现在您的全局设置中,但您可以使用“管理选项”对话框导出它们,然后您可以打开导出的设置,并将它们复制到团队共享的解决方案设置中。)

于 2013-08-12T11:34:44.460 回答