互換性のない Razor 1.0 に依存しているため、RazorEngine を Razor 2.0 アプリケーションにデプロイできないという問題に対して、この回避策を実装しようとしています。
私が行ったことは、bin フォルダーに 1.0 と 2.0 の 2 つのディレクトリを作成し、それぞれの System.Web.Razor.dll ファイルをそれぞれに配置することです。次に、依存アセンブリ/コードベースのヒントを web.config に追加して、アセンブリ ローダーを正しい方向に向けました。
ただし、System.Web.Razor アセンブリに適用した codeBase オーバーライドを Asp.net に反映させることはできないようです。その結果、RazorEngine で使用するために System.Web.Razor 1.0.0.0 を読み込むことができません。
Web.config
<configuration>
<runtime xmlns="">
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<codeBase version="1.0.0.0" href="file://c:\apps\lr2\web\arcs\bin\1.0\System.Web.Razor.dll" />
<codeBase version="2.0.0.0" href="file://c:\apps\lr2\web\arcs\bin\2.0\System.Web.Razor.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
System.Web.Razor 1.0.0.0 の Fusion アセンブリ読み込みログからの出力:
ログ: ユーザー = NT AUTHORITY\SYSTEM ログ: DisplayName = System.Web.Razor、バージョン = 1.0.0.0、カルチャ = ニュートラル、PublicKeyToken = 31bf3856ad364e35 (完全指定)
ログ: Appbase = file:///C:/apps/lr2/web/arcs/
ログ: 初期 PrivatePath = C:\apps\lr2\web\arcs\bin
ログ: 動的ベース = C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\a63cc915
ログ: キャッシュ ベース = C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\a63cc915
ログ: アプリ名 = 98966cc9
アセンブリの呼び出し: RazorEngine、Version=3.0.8.0、Culture=neutral、PublicKeyToken=9ee697374c7e744a。
ログ: このバインドはデフォルトのロード コンテキストで開始されます。
ログ: アプリケーション構成ファイルの使用: C:\apps\lr2\web\arcs\web.config
ログ: ホスト構成ファイルの使用: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
ログ: C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config のマシン構成ファイルを使用しています。
ログ: ポリシー後の参照: System.Web.Razor、Version=1.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35
ログ: GAC ルックアップに失敗しました。
ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/a63cc915/98966cc9/System.Web.Razor.DLL。
ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/a63cc915/98966cc9/System.Web.Razor/System.Web.Razor .DLL.
ログ: 新しい URL ファイル:///C:/apps/lr2/web/arcs/bin/System.Web.Razor.DLL のダウンロードを試みています。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/apps/lr2/web/arcs/bin/System.Web.Razor/System.Web.Razor.DLL.
ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/a63cc915/98966cc9/System.Web.Razor.EXE.
ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/a63cc915/98966cc9/System.Web.Razor/System.Web.Razor 。EXE。
ログ: 新しい URL ファイル:///C:/apps/lr2/web/arcs/bin/System.Web.Razor.EXE のダウンロードを試みています。
ログ: 新しい URL ファイルのダウンロードを試みています:///C:/apps/lr2/web/arcs/bin/System.Web.Razor/System.Web.Razor.EXE.
LOG: すべてのプローブ URL が試行され、失敗しました。
Asp.net が bin\1.0 を掘り下げようとしない理由は何ですか?
machine.config を確認しましたが、競合する assemblyBinding の兆候はありません。
助けてくれてありがとう!