【原文地址】Public Hotfix Patch Available for ASP.NET Compilation Issues
【原文发表日期】 Wednesday, April 11, 2007 10:39 PM
过去的一年里,我们发现和修补了大家报告遇上的几个ASP.NET 2.0编译缺陷。
引发这些缺陷的原因有多个,但根本原因通常跟项目的结构有关,这些项目有特别的跨页面的循环依赖。这些缺陷往往在系统上发生大规模的文件变化时(譬如,一个抗病毒程序同时更新很多文件上的所有时间戳)会被触发。
出错信息的例子:
下面这些出错信息,是你遇上这些编译问题时,你也许看到的运行时异常类型的例子:
(无法将ASP.masterpage_master类型的对象转换成ASP.masterpage_master类型)
或者:
(无法装载文件或程序集“App_Web_e9dbmaj, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的依赖向。系统找不到指定的文件。)
或者:
(编译错误信息:CS0006:找不到元数据文件“C:/WINDOWS/Microsoft.NET/Framework/v2.0. 50727/Temporary ASP.NET Files/cms.web/44e73607/b028acb3/App_global.asax.fakktchx. dll”。)
或者:
(System.InvalidOperationExceptio
这些问题的临时解决方案:
如果你有一个应用开始抛出上面这些错误中的某一个时,你通常可以马上施用一个临时解决方案,打开你应用的web.config文件,将 <compilation> 节的 batch 属性设置成false:
</configuration>
这告诉ASP.NET把单个的 .aspx/.ascx 文件动态编译成单独的程序集,这会避免触发异常的循环引用的问题。
你也可以使用下列步骤,删去“Temporary ASP.NET Files”缓存里的文件,来临时解决这个问题:
- 点击Windows开始按钮,点击运行,输入 iisreset /stop,然后点击OK。
- 打开 驱动字母: WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files 目录。
- 删除第二步里你找出的目录里的所有文件和所有文件夹。
- 点击开始,点击运行,输入 iisreset /start,然后点击OK。
你可以在Microsoft KB文章 #934839 (机器翻译的中文版)里找到这些临时方案的细节。
这些问题的QFE HotFix补丁现在可以下载了:
【译注:QFE=Quick Fix Engineering,快速修复工程】
作为上面施用配置文件临时方案的替代方案,你现在也可以下载和施用微软的一个QFE HotFix 补丁,该补丁修复了我们看到别人报告的编译问题。
这个编译问题的QFE HotFix补丁的直接下载链接在这里。你可以在这里的这个网页上找到其他常见的Visual Studio 和.NET 框架 QFE HotFixes。
重要注意事项:有不少人有时问我,他们是否应该主动安装QFE HotFixes(在他们遇上问题之前)。我总是建议别这么做,因为QFE hotfixes只经过有针对性的测试以确认解决了一个特定的问题,但并不经过整个产品的end to end sign-off (从头至尾,每一步都有签名同意,没问题才放行)。因此,我建议你只在你遇上上面这些针对性的问题时,你才施用它。
联系微软产品支持:
Visual Studio的大多数版本带有免费的产品支持券(product support ticket)(譬如,VS Pro with MSDN Premium每个订阅都有4个支持券)。你可以使用这些支持券得到 .NET 或 Visual Studio方面的帮助(譬如:帮你寻找你自己编码中的缺陷或性能问题,或者学习如何使用框架或 IDE中的某个特性)。
微软产品支持里有些非常,非常优异的工程师,如果你有问题的话,与他们合作将是非常愉快的事情。下面是些我强烈建议你订阅的 .NET 框架/ Visual Studio空间里的精彩博客:
- Tess: http://blogs.msdn.com/tess/
- Doug: http://blogs.msdn.com/dougste/
- Carlo: http://blogs.msdn.com/carloc/
- Rahul: http://blogs.msdn.com/rahulso/
- Jerry: http://blogs.msdn.com/jorman/
- Johan: http://blogs.msdn.com/johan/
- Todd: http://blogs.msdn.com/toddca/
如果你遇上你无法解决的问题,或者在生产性应用中遇上你需要急救的问题,给微软产品支持打个电话,你会遇上象上面列出的名单里的人,给你连上一个调试器,帮你诊断出问题所在。
谢谢,
文章来源: