我们有一个由4个开发人员开发的项目。有时会出现一个不应该存在的异常,人们会开始为什么会发生这种情况。通常它会说"无法加载类型''来自汇编'。
它尝试加载的类型不再存在,因此引用它将毫无疑问地导致此异常。问题是,即使视图说它没有代码也不再引用此类型。 上次发生这种情况时,这段代码抛出异常
@{
Layout = "_Layout.cshtml";
MyProfile profile = MyProfile.GetUserProfile();
}
它说:
Could not load type 'MyProject.Lib.MyService.Services.MyProfileBase' from assembly 'MyProject.Lib.MyService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
如果我在我们的源代码管理中检查" MyProfile"我可以看到它继承自类" MyProfileBase"昨天但已被删除。
那为什么还要尝试加载这个旧代码呢? 解决这个问题很简单。我需要做的就是用任何东西编辑Index.cshtml视图。它可能只是一个换行符或某个地方的空间。然后异常就消失了。 问题是,为什么会这样?有谁认出来了吗?它几乎就像代码被缓存用于这种个人观点一样。
在我们意识到我们需要做的就是编辑视图之前,我们可能会浪费时间对此进行排查。回收应用程序池甚至执行IISreset都无助于此异常。