T4MVC Исключить файл или контроллер

У меня есть контроллер, который встроен только в Debug (используя #if DEBUG), который я использую для размещения некоторых тестовых методов, которые мне не нужны на рабочем сервере.

Проблема, с которой я сталкиваюсь, заключается в том, что с помощью T4MVC я получаю производный класс на основе контроллера с перегрузками всех методов. Как только я пытаюсь построить в режиме Release, методы базового класса и виртуальных действий больше не присутствуют, и я получаю ошибки сборки.

В идеале я хотел бы иметь возможность исключить контроллер из T4MVC, но я не вижу способа сделать это в файле настроек и ответе на этот вопрос: T4MVC Как исключить отдельные файлы предполагает, что это невозможно.

Кто-нибудь знает способ сделать это или может придумать хорошую работу?


person Greg Jackman    schedule 12.09.2012    source источник


Ответы (2)


Используйте атрибут T4MVC на контроллере

[T4MVC(false)]
public Controller ControllerToIgnore //...

Работал для моих целей (чтобы исключить генерацию конкретного контроллера).

Из документации T4MVC.

person TJB    schedule 21.12.2015

Рассмотрите возможность выделения методов тестирования и контроллеров в отдельный проект, который зависит от вашего производственного кода. Таким образом, вам не нужно будет иметь #if Debug вещи. Я не уверен, какие у вас настройки, но вы можете попробовать использовать NonActionAttribute, заключенный в предложение #if !Debug. Таким образом, ваш производственный код не будет запускать методы как действия на ваших контроллерах. Но это попахивает неправильной версткой проекта.

person trailmax    schedule 13.09.2012