RazorGenerator.MsBuild не работает с пользовательским WebViewPage

Я пытаюсь заставить RazorGenerator.MsBuild скомпилировать наши файлы CSHTML при сборке. У меня проблема в том, что страницы CSHTML, которые наследуются от пользовательского WebViewPage, генерируют ошибку компиляции. Эти CSHTML-файлы работают во время выполнения, если они копируются на веб-сайт, но только сборка не выполняется.

Например, у нас может быть следующий файл CSHTML:

public class MyWebViewPage : System.Web.Mvc.WebViewPage
{
    public bool DoSomething()
    {
        return true;
    }
}

И следующий CSHTML:

@inherits MyWebViewPage 

@if(DoSomething()){

}

Это приведет к следующей ошибке:

The name 'DoSomething' does not exist in the current context.

Как я могу заставить задачу MSBuild распознать мой пользовательский класс?

1 ответ

Это оказывается проблемой с тем, как RazorGenerator.MsBuild генерирует код. При компиляции он пишет унаследованный класс как:

MyView : MyWebViewPage<dynamic>

Генератор требует общего базового представления. Самое простое решение - изменить MyWebViewPage для поддержки обобщений:

public class MyWebViewPage<T> : System.Web.Mvc.WebViewPage<T>
{
    public bool DoSomething()
    {
        return true;
    }
}
Другие вопросы по тегам