无法加载文件或程序集“EPiServer.Framework”
Posted
技术标签:
【中文标题】无法加载文件或程序集“EPiServer.Framework”【英文标题】:Could not load file or assembly 'EPiServer.Framework' 【发布时间】:2012-11-17 20:54:09 【问题描述】:我在配置 EPi CMS 5 以在 IIS7.5 下运行时遇到此异常。
异常详细信息:System.IO.FileNotFoundException:无法加载 文件或程序集“EPiServer.Framework”或其依赖项之一。
来源错误: 在执行当前 Web 请求期间生成了未处理的异常。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。 程序集加载跟踪:以下信息有助于确定程序集“EPiServer.Framework”无法加载的原因。
WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value
[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 为 1。注意:有 是与装配绑定失败相关的一些性能损失 记录。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。 堆栈跟踪:
[FileNotFoundException: Could not load file or assembly 'EPiServer.Framework' or one of its dependencies. Det går inte att
hitta filen.] System.RuntimeTypeHandle.GetTypeByName(字符串名称, 布尔 throwOnError,布尔 ignoreCase,布尔反射, StackCrawlMarkHandle stackMark, Boolean loadTypeFromPartialName, ObjectHandleOnStack 类型)+0 System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔值 throwOnError, Boolean ignoreCase, Boolean reflectOnly, StackCrawlMark& stackMark, Boolean loadTypeFromPartialName) +95 System.RuntimeType.GetType(字符串类型名称,布尔 throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) +54 System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +65 System.Web.Compilation.BuildManager.GetType(字符串类型名,布尔值 throwOnError,布尔忽略大小写)+69 System.Web.Configuration.ConfigUtil.GetType(字符串类型名,字符串 propertyName、ConfigurationElement configElement、XmlNode 节点、 Boolean checkAptcaBit, Boolean ignoreCase) +52 [ConfigurationErrorsException:或其依赖项之一。 Det går inte att 命中文件。] System.Web.Configuration.ConfigUtil.GetType(字符串 typeName, String propertyName, ConfigurationElement configElement, XmlNode 节点,布尔型 checkAptcaBit,布尔型 ignoreCase) +360 System.Web.Configuration.ConfigUtil.GetType(字符串类型名,字符串 propertyName, ConfigurationElement configElement, Boolean checkAptcaBit) +27 System.Web.Configuration.Common.ModulesEntry.SecureGetType(字符串 typeName, String propertyName, ConfigurationElement configElement) +44 System.Web.Configuration.Common.ModulesEntry..ctor(字符串名称,字符串 typeName, String propertyName, ConfigurationElement configElement) +52 System.Web.HttpApplication.BuildIntegratedModuleCollection(列表`1 模块列表)+200 System.Web.HttpApplication.GetModuleCollection(IntPtr appContext) +1365 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext、HttpContext 上下文、MethodInfo[] 处理程序)+95 System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态, MethodInfo[] 处理程序、IntPtr appContext、HttpContext 上下文)+194 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContext 上下文)+339 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr 应用上下文)+253 [HttpException(0x80004005):或其依赖项之一。 Det går inte att 命中文件。] System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文)+9080108 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文)+97 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext 上下文)+256
【问题讨论】:
【参考方案1】:检查应用程序的 /Bin 文件夹并查看 EPiServer.Framework DLL 是否存在。如果不是,您可以通过右键单击解决方案资源管理器中的“引用”文件夹中的 DLL 并选择“属性”将 DLL 设置为“复制本地”,然后将“复制本地”设置为“真”。现在,当您构建解决方案时,DLL 将从它的参考位置复制到 Bin 文件夹中。您可能需要对所有 EPiServer DLL 执行此操作。
我过去曾遇到过这种情况,即使启用了“特定版本”,加载正确的 DLL 仍然存在问题。我们解决它的一种方法是将所有 EPiServer DLL 复制到我们解决方案目录中的 Lib 文件夹中,并添加对这些 DLL 的引用,保持特定版本和复制本地设置为 true。
【讨论】:
我不认为应该有一个单独的 Episerver.Framework.DLL。我已经检查过同一 CMS 的其他工作版本。 @Lautaro 好吧,为什么您的应用程序试图加载一个? EPiServer.Framework was released with CMS 6,你确定你引用的是 CMS 5 DLL 吗?尝试在属性窗口中将 DLL 的“特定版本”设置为 true。 好点!我已将所有 Epi DLL 的特定版本设置为 true,但结果是相同的。我检查了 web.config 中的程序集绑定,它们都设置为 newVersion="5.2.375.236"。以上是关于无法加载文件或程序集“EPiServer.Framework”的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0
无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配
无法加载文件或程序集'netstandard,版本 = 2.0.0.0