2016-12-19 3 views
0

ビルド時に私たちのCSHTMLファイルをコンパイルするためにRazorGenerator.MsBuildを取得しようとしています。私が抱えている問題は、カスタムWebViewPageから継承したCSHTMLページがコンパイルエラーをスローすることです。これらのCSHTMLファイルは、Webサイトにコピーされると実行時に機能しますが、失敗したビルドのみです。RazorGenerator.MsBuildがカスタムWebViewPageで動作しない

たとえば、我々は次CSHTMLファイル可能性があります:これは、次のエラーが発生します

@inherits MyWebViewPage 

@if(DoSomething()){ 

} 

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

どのようにすることができ

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

そして次CSHTMLを私のカスタムクラスを認識するためにMSBuildタスクを取得しますか?

答えて

0

これは、RazorGenerator.MsBuildがコードを生成する方法に問題があることが判明しました。コンパイルするとき、それはとして継承されたクラスを書き込みます

MyView : MyWebViewPage<dynamic> 

発電機は、一般的なベース・ビューが必要です。最も簡単な解決策は、MyWebViewPageをジェネリックをサポートするように変更することです。

public class MyWebViewPage<T> : System.Web.Mvc.WebViewPage<T> 
{ 
    public bool DoSomething() 
    { 
     return true; 
    } 
} 
関連する問題