2013-03-27 69 views
12

ReSharper 7.1.1代碼檢查虛假地報告<location>文件中的元素如果涉及與源樹中的文件夾不直接對應的URL,則爲冗餘。如果您使用的是ASP.NET MVC或Web API,則URL鏈路不直接對應於任何特定的物理文件夾是正常的。避免Resharper <location> web.config MVC和WebAPI的警告

如果您運行的解決方案範圍的檢查,你會得到兩次警告,我已經能夠關閉其中的一個,但我不能工作了如何禁用第二。

第一個是「冗餘位置元素」警告。 ReSharper淡出整個位置部分。下面是它會淡出人們的東西的例子:

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

你需要這個配置,如果您是通過ACS使用聯合登錄,並且要提供一個元數據終結。但是這個名字不會有相應的路徑。我的項目也有很多常見的例子,但是我的項目也有幾個對應於通過MVC和Web API路由配置處理的路徑的元素 ,並且它們也有同樣的問題,根本原因似乎是一樣的:ReSharper在項目中看不到任何與此位置相對應的東西,因此它錯誤地認爲它是錯誤的,它困擾着MVC和Web API控制器,並且同時,由於東西像模塊任何可用的路徑)

這是很容易擺脫這種第一次警告的:你可以在檢查嚴重程度設置將其關閉。

然後,您最終得到第二個警告:「位置元素未使用:在FederationMetadata中找不到任何項目項目」(以及對於每個具有相應<location>元素的控制器的類似警告)。

這其中僅出現在當您檢查整個解決方案出現的「檢查結果」面板。當您查看源文件本身時,通常的檢查小部件都不會顯示。奇怪的是,這個似乎沒有選項被禁用。

我知道你可以右鍵單擊並選擇「隱藏...」(儘管這似乎認爲這是一個「冗餘位置」問題,我已經在設置中禁用了該問題),但是至於我可以告訴,隱藏檢查結果是本地的我的機器。我想配置團隊共享點設置,以便它不會在任何地方顯示此警告。

我的目標乾淨的檢查結果爲所有用戶不使每個用戶隱藏結果。 Resharper虛假地報告了這個問題 - web.config沒問題,只是R#誤解了它。有誰知道我能如何讓第二個警告消失? (或者,更好的,有一些方法可以讓我授權R·才能夠知道這些「隱藏」的位置真的存在嗎?)

回答

0

看來,有兩件這樣的:

  1. 配置一個網絡路徑來處理這兩個錯誤
  2. 顯然,你必須移動設置你的DotSettings.user文件,進入最好的方法用手共享工作組文件

如果你點擊違規路徑屬性(把插入符的屬性值),然後等待R·彈出的事情出現了,它的菜單應該提供一種方式來創建一個'路徑映射'或編輯前正在爲該網站映射。你可以用它來告訴R#路徑對應的實際文件在哪裏。或者,因爲在這種情況下沒有這樣的文件,所以您可以將該操作設置爲忽略此路徑。

有了這個,所有提到的警告都不會出現。

不幸的是,路徑映射對話框(如過濾器問題對話框)只有一個「保存」按鈕,沒有「保存到」按鈕,無法控制設置的位置。實際上,它們似乎最終在Web項目的<project>.DotSettings.user文件中。

但事實證明,如果您在文本編輯器中打開該文件,將設置從中刪除,然後將其粘貼到團隊共享的解決方案設置中即可。這似乎以適用於項目中每個人的方式擺脫了兩個警告。 (您應該可以使用類似的技巧來處理「過濾器問題」設置,儘管您需要在不同的位置查找這些技巧最終會出現在您的全局設置中,但您可以使用「管理選項」對話框導出這些,然後你可以打開導出的設置,並將其複製到團隊共享解決方案設置)

1

您可以更改R·設置,使它們不是本地到你的機器。

  1. 在VS中,單擊RESHARPER菜單,然後單擊Manage Options...
  2. 雙擊team-shared項目(應該是中間的一個,This computerpersonal之間)。

通過在此更改設置,它將在您的項目中創建一個[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。

+0

我已經有一個'[項目] .csproj的。 DotSettings'檢入源代碼控制。但是,你可以使用它來存儲隱藏設置? (即,選擇從檢查窗格的上下文菜單隱藏,當你的行爲。)那些隱藏的設置似乎不顯示在選項對話框。據我所知,你只能通過該上下文菜單配置它們。隱藏選項似乎是擺脫此錯誤的唯一方法(除了,正如您所建議的,完全不包括web.config)。 – 2013-03-27 14:22:18

+0

...你也可以使用過濾器的問題...按鈕檢查窗格來獲得隱藏這些東西。但同樣,似乎沒有辦法將過濾保存到共享的團隊範圍DotSettings中。 – 2013-03-27 14:26:50

+0

雖然你的方法很完善的「冗餘位置元素」警告(正如我在提問時指出),你的更新仍然沒有出現,以幫助「位置元素是未使用」出現在「檢查結果警告「小組。這決定了特定的錯誤是否顯示的對話框(「篩選問題」對話框)沒有一個「另存爲」按鈕(檢驗嚴重性對話框不像)。並且在管理選項... – 2013-08-12 11:10:30

8

我只是說這樣的:

<!-- 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 -->