Respuesta

7

Con ReSharper puede haga clic con vistas Razor y Encuentra Usos, pero tendría que pasar por manualmente y repetir para todas las vistas (a menos que se puede enganchar en la API de ReSharper y automatizarlo).

El problema con vistas supuesto es que están enlazadas en tiempo sobre la base de una convención definida en el motor de vista, en el caso de la opción predeterminada RazorViewEngine busca una vista correspondiente en la ~/Views/{Controller}/{Action} y ~/Views/Shared/{Action}. Por lo tanto, es difícil distinguir en el diseño o el tiempo de compilación qué vistas, parciales y plantillas nunca se utilizan.

Puede acercarse desde el ángulo opuesto: encuentre qué vistas se están utilizando. Luego, compare esta lista con todas las vistas del proyecto, evalúe los resultados (manualmente y con ReSharper Find Usages) y confirme que realmente no se están utilizando antes de eliminarlos finalmente.

Para encontrar las vistas utilizadas, puede personalizar RazorViewEngine para que se registre cada vez que carga una vista con CreateView y FindPartialView, p. Ej.

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

configurarlo en global.asax.cs

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

continuación, extraiga una lista de rutas de vista únicos registrados con el que comparar puntos de vista de su proyecto. Se necesita un poco de esfuerzo, pero posiblemente valga la pena si tienes muchas vistas sin usar que complican el proyecto.

-1

Se puede cambiar el nombre de una de las vistas sospechosas y compilar ... si algún controlador que está utilizando obtendrá errores :)

No conoce ninguna característica "incorporada" para buscar vistas no utilizadas.

+0

El único problema que probablemente surja en tiempo de compilación es si cambia el nombre fuera de Visual Studio y todavía hay una referencia al archivo por el nombre anterior en CSProj; de lo contrario, compilará sin ninguna vista coincidente bien . ReSharper debería mostrar un error si lo tiene instalado, pero tuve que abrir el controlador para mostrar el error. También vale la pena señalar que incluso esto no es infalible si hay otra vista con nombre coincidente en la ubicación compartida o en el directorio de vistas de raíz de la aplicación si la vista que está eliminando se encuentra en un área. – pwdst

Cuestiones relacionadas