2

ServiceStack.Razorに基づく現在非常に単純なWebアプリをAppHarborに展開しようとしていますが、asp.netのプリコンパイル手順で失敗します。

Microsoft (R) ASP.NET Compilation Tool version 4.0.30319.17929
Utility to precompile an ASP.NET application
Copyright (C) Microsoft Corporation. All rights reserved.

d:\temp\ueggj0qu.hf5\temp\root\61980531\2c38de0c\App_Web_431dglyw.0.cs(15): error CS0146: Circular base class dependency involving 'RazorOutput.ViewPage' and 'RazorOutput.ViewPage'

[HttpCompileException]: d:\temp\ueggj0qu.hf5\temp\root\61980531\2c38de0c\App_Web_431dglyw.0.cs(15): error CS0146: Circular base class dependency involving 'RazorOutput.ViewPage' and 'RazorOutput.ViewPage'
   at System.Web.Compilation.AssemblyBuilder.Compile()
   at System.Web.Compilation.WebDirectoryBatchCompiler.CompileAssemblyBuilder(AssemblyBuilder builder)
   at System.Web.Compilation.WebDirectoryBatchCompiler.<CompileNonDependentBuildProviders>b__0(AssemblyBuilder assemblyBuilder)
   at System.Web.Compilation.CompilationUtil.CompileParallel(ICollection assemblyBuilders, Action`1 action)
   at System.Web.Compilation.WebDirectoryBatchCompiler.CompileNonDependentBuildProviders(ICollection buildProviders)
   at System.Web.Compilation.WebDirectoryBatchCompiler.Process()
   at System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean ignoreErrors)
   at System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir, Boolean ignoreErrors)
   at System.Web.Compilation.BuildManager.PrecompileWebDirectoriesRecursive(VirtualDirectory vdir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.PrecompileWebDirectoriesRecursive(VirtualDirectory vdir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.PrecompileAppInternal(VirtualPath startingVirtualDir, IEnumerable`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManager.PrecompileApp(VirtualPath startingVirtualDir, IEnumerable`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManager.PrecompileApp(ClientBuildManagerCallback callback, IEnumerable`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCallback callback, List`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCallback callback, List`1 excludedVirtualPaths)
   at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback, Boolean forceCleanBuild)
   at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback)
   at System.Web.Compilation.Precompiler.Main(String[] args)

プリコンパイルをオフにできることは知っていますが、プロジェクトをさらに複雑にする前に、今すぐこの問題の根底に立ちたいと思います。

プロジェクトは現在、次の非常に基本的なバージョンで構成されています。

  • Views / _Layout.cshtml
  • Views / SomeServiceResponseView.cshtml
  • content / SomeStaticView.cshtml

静的ビューは100%静的ではなく(Razorで生成されたビューのままです)、サービスDTOモデルに基づいていないだけです。

_LayoutとStaticViewはどちらもViewPageから派生しています(例@inherits ViewPage)。
ServiceResponseViewは、ViewPageの汎用モデルバージョンから派生しています(例@inherits ViewPage<SomeDtoResponse>)。

aspnet_compiler.exeツールをローカルで実行しましたが、上記と同じ出力しか得られませんでした(AppHarbor FAQは、プリコンパイルの問題をデバッグするためにローカルで実行することを提案していますが、それが私に何かを与える方法を見つけることができませんでした詳しくは...?)。

誰かが以前に同様のエラーメッセージを見たことがありますか?
かみそりが隠れて何をしているのかについてもっと知っている人は、これを引き起こしている可能性のあるものについて何か手がかりを得ましたか?
これは、ServiceStack.Razorと通常のASP.NET MVC Razorの違いによる問題ですか。この場合、プリコンパイルをオフにするのが正しい解決策ですか。

4

2 に答える 2

2

AppHarborでViewPre-compilationも無効にする必要がありました。

ServiceStack Razorページには独自のビルドプロセスがあり、System.Web.Mvcにも依存していないため、有効にすることは不可能だと確信しています。

AppHarborプロセスは、System.Web.MvcRazorビューを想定していると思います。

于 2013-01-18T17:48:24.510 に答える
0

IIS Expressでローカルで実行しているのと同じエラーが発生し、これをweb.configに追加すると、次のように機能することがわかりました。

<appSettings>
  <add key="webPages:Enabled" value="false" />
</appSettings>

ServiceStackのRazorRockstarサンプルで、自分のプロジェクトと1行ずつ比較して、自分のプロジェクトが機能しなかった理由を確認したところ、その設定が見つかりました。

于 2013-04-29T18:00:43.720 に答える