2016-12-19 2 views
0

J'essaie d'obtenir RazorGenerator.MsBuild pour compiler nos fichiers CSHTML sur la construction. Le problème que j'ai est que les pages CSHTML qui héritent d'un WebViewPage personnalisé jettent une erreur de compilation. Ces fichiers CSHTML fonctionnent au moment de l'exécution s'ils sont copiés sur le site Web, seul le build échoue.RazorGenerator.MsBuild ne fonctionne pas avec WebViewPage personnalisé

Par exemple nous pourrions avoir le fichier CSHTML suivant:

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

Et le CSHTML suivant:

@inherits MyWebViewPage 

@if(DoSomething()){ 

} 

Cela entraînera l'erreur suivante:

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

Comment puis-je obtenir la tâche MSBuild pour reconnaître ma classe personnalisée?

Répondre

0

Cela s'avère être un problème avec la façon dont RazorGenerator.MsBuild génère du code. Lors de la compilation, il écrit la classe héritée comme suit:

MyView : MyWebViewPage<dynamic> 

Le générateur nécessite une vue de base générique. La solution la plus simple consiste à modifier MyWebViewPage pour prendre en charge les génériques:

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