ReSharper 7.1.1代码检查错误地将<location>
文件中的web.config
元素报告为冗余,如果它们涉及的源URL与源树中的文件夹不直接对应。如果您使用的是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控制器,以及由模块之类的东西提供的任何路径。)
很容易摆脱这个第一个警告:您可以在检查严重性设置中将其关闭。
然后你得到第二个警告:“Location元素未使用:在FederationMetadata中找不到任何项目项目”(对于每个具有相应<location>
元素的控制器都有相似的警告。)
此选项仅出现在检查整个解决方案时出现的“检查结果”面板中。查看源文件本身时,不会显示任何常用的检查小部件。奇怪的是,这个似乎没有被禁用的选项。
我知道您可以右键单击并选择“隐藏...”(虽然看起来这是一个“冗余位置”问题,我已经在设置中禁用了该问题),但就我而言可以告诉我,隐藏检查结果是我的机器本地的。我想配置团队共享的dotsettings,以便它不会在任何地方显示此警告。
我的目标是为所有用户提供干净的检查结果,而不会让每个用户隐藏结果。 Resharper虚假地报告了这个问题 - web.config
很好,只是R#误解了它。有谁知道我怎么能让第二个警告消失? (或者,更好的是,有什么方法可以让R#知道这些“隐藏”位置确实存在吗?)
答案 0 :(得分:9)
我刚添加了这个:
<!-- 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 -->
答案 1 :(得分:1)
您可以更改R#设置,使其不在您的计算机本地。
RESHARPER
菜单,然后点击Manage Options...
team-shared
项目(应该是This computer
和personal
之间的中间项目。)通过更改此处的设置,它将在您的项目中创建一个[ProjectName].csproj.DotSettings
文件。如果将此文件检入源代码管理,则将与在项目上开发的其他R#用户共享这些设置。 AFAIK,您可以更改的任何设置(例如告诉R#检查严重性应该与默认值不同),您应该能够添加到团队共享设置。
至于你的web.config错误,我对R#有了更大的优势,因为当它启用时,我在web.config和app.config文件上丢失了intellisense。您可以告诉R#忽略以下错误,但我不确定它是您正在寻找的解决方案,因为它会忽略web.config文件中的所有R#问题。
team-shared
设置(如上所述)后,点击左侧菜单中Settings
下的Code Inspection
项。Edit Items to Skip button
。Files and folders to skip when analysing
下,点击Add File...
。这告诉R#在分析时忽略整个web.config文件。同样,不确定这是否是您想要的解决方案,但它可能会抑制您看到的错误建议。
更新(回复评论)
实际上,您可以从VS上下文菜单中更改检查选项。当Inspection Options
对话框出现单选按钮(Do not show
- Error
)时,会出现Save To
按钮。单击该按钮将设置保存到团队共享的DotSettings。
答案 2 :(得分:0)
似乎有两件事:
DotSettings.user
文件中移出并手动转移到共享团队文件中如果单击违规路径属性(将插入符号放在属性值中)然后等待R#弹出窗口出现,其菜单应提供创建“路径映射”或编辑现有路径的方法该网站的映射。您可以使用它来告诉R#路径对应的实际文件在哪里。或者,由于在这种情况下没有这样的文件,您可以将操作设置为忽略此路径。
有了这个,所提到的警告都不会出现。
不幸的是,路径映射对话框(如“过滤器问题”对话框)中只有一个“保存”按钮,没有“保存到”按钮,无法控制设置的去向。实际上,它们似乎最终出现在Web项目的<project>.DotSettings.user
文件中。
但是,如果您在文本编辑器中打开该文件,将设置从那里删除,并将其粘贴到您的团队共享解决方案设置中,那么结果只是文件。这似乎以适用于项目中每个人的方式摆脱了两个警告。
(您应该可以使用类似的技巧来处理“过滤器问题”设置,但您需要查看其他位置。这些最终会出现在您的全局设置中,但您可以使用“管理选项”对话框将其导出,然后您可以打开导出的设置,并将它们复制到团队共享解决方案设置中。)