C# Asp.net未应用dependentAssembly/codeBase提示
我试图实现一个问题,RazorEngine不能部署在Razor2.0应用程序中,因为它依赖于不兼容的Razor1.0 我所做的是在bin文件夹中创建了两个目录:1.0和2.0,并将各自的System.Web.Razor.dll文件放入其中。然后,我将dependentAssembly/codeBase提示添加到web.config中,以将程序集加载程序指向正确的方向 但是,我似乎无法让Asp.net遵守我为System.Web.Razor程序集应用的代码基覆盖。结果是System.Web.Razor 1.0.0.0无法加载以供RazorEngine使用 Web.configC# Asp.net未应用dependentAssembly/codeBase提示,c#,asp.net,.net,assembly-loading,C#,Asp.net,.net,Assembly Loading,我试图实现一个问题,RazorEngine不能部署在Razor2.0应用程序中,因为它依赖于不兼容的Razor1.0 我所做的是在bin文件夹中创建了两个目录:1.0和2.0,并将各自的System.Web.Razor.dll文件放入其中。然后,我将dependentAssembly/codeBase提示添加到web.config中,以将程序集加载程序指向正确的方向 但是,我似乎无法让Asp.net遵守我为System.Web.Razor程序集应用的代码基覆盖。结果是System.Web.Raz
<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程序集加载日志的输出:
日志:User=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
文件\root\a63cc915
日志:缓存基=
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET
文件\root\a63cc915
日志:AppName=98966cc9
调用程序集:RazorEngine,版本=3.0.8.0,区域性=中性,
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,版本=1.0.0.0,
区域性=中性,PublicKeyToken=31bf3856ad364e35
日志:GAC查找失败
日志:正在尝试下载新URL
file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary
ASP.NET文件/root/a63cc915/98966cc9/System.Web.Razor.DLL
日志:正在尝试下载新URL
file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary
ASP.NET
文件/root/a63cc915/98966cc9/System.Web.Razor/System.Web.Razor.DLL。日志:正在尝试下载新URL file:///C:/apps/lr2/web/arcs/bin/System.Web.Razor.DLL. 日志:正在尝试下载新URL file:///C:/apps/lr2/web/arcs/bin/System.Web.Razor/System.Web.Razor.DLL. 日志:正在尝试下载新URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET文件/root/a63cc915/98966cc9/System.Web.Razor.EXE 日志:正在尝试下载新URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET 文件/root/a63cc915/98966cc9/System.Web.Razor/System.Web.Razor.EXE 日志:正在尝试下载新URL file:///C:/apps/lr2/web/arcs/bin/System.Web.Razor.EXE. 日志:正在尝试下载新URL file:///C:/apps/lr2/web/arcs/bin/System.Web.Razor/System.Web.Razor.EXE. 日志:所有探测URL都已尝试但失败 知道Asp.net为什么从不尝试深入到bin\1.0中吗 我确实检查了machine.config,没有冲突assemblyBinding的迹象
谢谢你的帮助 我用AppDomain.CurrentDomain.AssemblyResolve事件解决了这个问题
System.AppDomain.CurrentDomain.AssemblyResolve += (o, e) =>
{
if (e.Name == "System.Web.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")
return System.Reflection.Assembly.LoadFrom(Server.MapPath("~/bin/1.0/System.Web.Razor.dll"));
return null;
};