![](/img/trans.png)
[英]Could not load file or assembly “*.dll” , The system cannot find the file specified
[英]Receive “Could not load file or assembly”…“The system cannot find the file specified” error for DLL only on Production
我有一个使用Telerik控件的ASP.net 4.0网站。 最近,过去不再在公司工作的开发人员升级了Telerik控件版本。
该网站在本地运行良好,在我将其发布并移至我的DEV环境(以前的网站已被清除,并替换为整个已发布的新网站)之后,它运行正常,没有任何问题。
一旦我将发布的版本投入生产,它每次都会出错,并显示以下消息(附有屏幕截图):
无法加载文件或程序集“ Telerik.Web.Design,版本= 2011.2.915.40,文化=中性,PublicKeyToken = 121fae78165ba3d4”或其依赖项之一。 该系统找不到指定的文件。
我知道DLL存在于此,并且具有相同的版本“ 2011.2.915.40”。 我来回移动时真的很沮丧,由于某种原因,一旦移到产品中,它只会出错?
所以我觉得自己很愚蠢,但是我不得不将Telerik.Web.Design.dll添加到Prod的垃圾箱中。 奇怪的是,DLL从来不是该项目的一部分,并且在本地和DEV都工作得很好。
我在计算机上进行了搜索,找到了然后添加了它。 不知道为什么Local和DEV没有它就可以工作,但是现在我将其添加到BIN中修复了。
Telerik.Web.Design.dll
尝试找到您的站点要加载的Telerik程序集,它可能仍在ASP.NET临时文件中达到某个旧版本。 也发生在我身上。
对于此类调试问题,我在Global.asax.cs
设置了AppDoman.AssemblyLoad
处理程序:
var appDomain = AppDomain.CurrentDomain;
appDomain.AssemblyLoad += AssemblyLoadEventHandler;
LogLoadedAssemblies();
使用这些:
private void LogLoadedAssemblies()
{
var log = LogManager.GetLogger("AssemblyLoadHandler");
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
log.Info("Already loaded: " + assembly.FullName + " (" + (assembly.IsDynamic ? "dynamic" : assembly.Location) + ")");
}
}
static void AssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
{
LogManager.GetLogger("AssemblyLoadHandler").Info("Assembly loaded: " + args.LoadedAssembly.FullName + " (" + (args.LoadedAssembly.IsDynamic ? "dynamic" : args.LoadedAssembly.Location) + ")");
}
我使用log4net记录器,但是我相信您可以轻松地将此代码适应您的记录基础架构。
似乎我遇到了同样的问题。尝试将所有必需的dll放入生产环境中的bin文件夹中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.