回答

7

隨着ReSharper的你可以用鼠標右鍵單擊一個Razor視圖和查找用法,但你必須手動完成,重複所有視圖(除非你可以掛接到ReSharper的API和自動化它)。

,享有當然,問題是,他們是後期綁定基於視圖引擎定義的慣例,在默認RazorViewEngine它會在~/Views/{Controller}/{Action}~/Views/Shared/{Action}相應的視圖的情況。因此很難在設計或編譯時告訴哪些視圖,部分和模板從不使用。

您可能會從相反的角度接受它:查找正在使用哪些視圖。然後將該列表與項目中的所有視圖進行比較,評估結果(手動並使用ReSharper查找用法),並確認在最終刪除它們之前確實沒有使用它們。

要找到正在使用的視圖,您可以自定義RazorViewEngine以便每次加載視圖時使用CreateViewFindPartialView(例如,

public class LoggingRazorViewEngine : RazorViewEngine 
{ 
    protected override IView CreateView(
     ControllerContext controllerContext, 
     string viewPath, 
     string masterPath) 
    { 
     LogManager.GetLogger("").Debug(viewPath); 
     return base.CreateView(controllerContext, viewPath, masterPath); 
    } 
} 

中的global.asax.cs配置它

ViewEngines.Engines.Clear(); 
ViewEngines.Engines.Add(new LoggingRazorViewEngine()); 

然後將解壓後的記錄獨特的視角路徑列表進行比較的項目的看法。涉及的工作量很大,但如果您有大量未使用的視圖混淆項目,可能會值得。

-1

你可以重命名的可疑視圖之一,並編譯...如果某些控制器使用它,你將得到錯誤:)

不知道任何「內置」功能來查找未使用的視圖。

+0

在編譯時可能出現的唯一問題是,如果您在Visual Studio之外重命名該文件,並且在CSProj中仍然存在對該文件的引用(否則它將在沒有任何匹配視圖的情況下編譯) 。如果安裝了ReSharper,它應該會顯示一個錯誤信息 - 但我必須打開控制器才能顯示錯誤。還值得注意的是,即使這不是萬無一失,如果您正在刪除的視圖在一個區域中,共享位置或應用程序根視圖目錄中存在具有匹配名稱的另一個視圖。 – pwdst

相關問題