我刚收到一条有点出乎意料的错误消息:
错误消息:无法加载文件或 程序集'删除ReportingContents'或 其中一个依赖项。位于 程序集的清单定义 与程序集引用不匹配。 (HRESULT异常:0x80131040)
我有一个ASP.NET网站,其中包含10个项目,这些项目已编译成DLLS并位于bin目录中。 ReportingContents是这些项目之一。在过去,我已经成功地将新版本的文件(dll,pdb和xml)复制到bin目录并回收了应用程序池,它只是自己选择了新版本。这次我想“我不应该在网站上有一个调试版本”所以我构建为发布版,只是复制了dll和xml文件,并要求我们的部署人员删除pdb。
当我被告知完成后我尝试访问该网站并收到上述错误消息。
让我感到惊讶的是,它提到的程序集是“删除ReportingContents”,我不知道“删除”可能来自哪里。
我不确定会出现什么问题。所以我希望你能提供帮助:
我的选择是:
1)我应该使用调试版本,因为那已经存在了。 2)我的部署人员未能删除不再相关的pdb。 3)应用程序池回收没有正确刷新代码,它期待旧的dll并获得新的代码 4)其他地方出现了一些真正不应该做的事情。
任何想法或建议都非常感谢......我需要部署这些代码,并且在我第一次知道出了什么问题之前不要再这么做了......
值得一提的是,我只能通过其他人访问实时环境,所以我不能轻易地检查那里的任何内容。
如果它在这里有用,那么附带的堆栈跟踪:
Error Target: System.Reflection.Assembly _nLoad(System.Reflection.AssemblyName, System.String, System.Security.Policy.Evidence, System.Reflection.Assembly, System.Threading.StackCrawlMark ByRef, Boolean, Boolean)
Stack Trace:
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
答案 0 :(得分:0)
回想起来,答案显而易见。不是删除我想要替换的文件,而是将它们重命名为“Delete ReportingContents”,然后复制到新文件中。当然这意味着他们被加载了,我假设抱怨文件名不正确或类似的东西。它的结果是,当我让他正确地删除它时,一切都有效。