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;
}
}