Мне нужно найти все классы, производные от "System.Web.UI.Page", которые ссылаются на другой класс, производный от Page ... и все, что я пробую в NDepend, не дает мне ничего или каждую страницу.
Недавно мы преобразовали «сайт» Asp.Net в «веб-приложение» и обнаружили, что многие страницы имеют одинаковое имя класса с классами на уровне нашей базы данных. Они находятся в другом пространстве имен, но, поскольку все страницы находятся в одном и том же пространстве имен (и теперь находятся в одной сборке), у нас возникли некоторые проблемы.
В основном это вызывало ошибки компиляции, когда страница использовала класс слоя данных и обращалась к его члену, но теперь, когда все страницы находятся в веб-приложении (и, следовательно, могут видеть друг друга), компилятор решил, что они ссылка на класс веб-страницы, а не на класс слоя данных. Мы обеспокоены тем, что некоторые классы могли ускользнуть после сбоя во время компиляции, возможно, реализовав элемент с тем же именем, поэтому мы хотим найти любое место, где .Net считает веб-страницу (класс, который наследует (хотя и отдаленно) из System.Web.UI.Page) содержит ссылку на другую веб-страницу.
Очевидно, что этот NDepend CQL просто возвращает все страницы:
SELECT TYPES FROM ASSEMBLIES "UI"
WHERE IsUsing "System.Web.UI.Page"
AND DeriveFrom "System.Web.UI.Page"
Кто-нибудь знает, возможно ли это, или я могу написать правило, используя FXCop или что-то еще?