修复︰ 有.NET Framework 3.5 Service Pack 1 安装的计算机,在引发异常时应用程序对 ParameterInfo 对象的泛型接口调用 GetOptionalCustomModifiers 方法或 GetRequiredCustomModifiers 方法

适用于: .NET Framework 3.5 Service Pack 1

症状


具有一个泛型接口的ParameterInfo对象调用GetOptionalCustomModifiers方法或GetRequiredCustomModifiers方法的应用。具有 Microsoft.NET Framework 3.5 Service Pack 1 (SP1) 安装的计算机上运行此应用程序时,引发异常,并且您收到类似于以下内容的错误消息︰
Mscorlib.dll 中发生未处理的异常的类型 System.ExecutionEngineException
此外,应用程序日志中会记录事件 ID 1023。该事件类似于以下︰ 事件 ID 1000 还可能会记录在应用程序日志中。该事件类似于以下内容︰

原因


出现此问题是由于.NET Framework 3.5 SP1 中的问题。

解决方案


修补程序信息

可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。仅对出现这一特定问题的系统应用此修补程序。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。

若要从 MSDN 代码库中下载此修补程序,请访问下面的 Microsoft Web 站点:


注意:MSDN 代码库显示获取此修复程序的语言。如果看不到列出的语言,这是因为代码库的资源页不可用这种语言。


注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰

注意:如果为 Windows Server 2008 或 Windows Vista Service Pack 1,您必须拥有此修补程序,而是获取修补程序 957542。957542 修复程序可以解决此问题,可供这些操作系统。的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰

957542解决︰ 在计算机上正在运行的.NET Framework 3.5 Service Pack 1,JIT 编译器和 Mscorjit.dll 文件使用本机映像生成器 (Ngen.exe) 可能会生成不正确的代码

系统必备组件

您必须具有要应用此修补程序的安装.NET Framework 3.5 SP1。

重启要求

您可能需要重新启动计算机,如果任何更新的文件正在使用。

修补程序替换信息

此修补程序不替换任何其他修补程序。

文件信息

此修复程序的英文版具有的文件属性 (或更新的文件属性)在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用控制面板中的日期和时间项中的时区选项卡。
Windows 2000、 Windows XP 和 Windows Server 2003,x86 版本
文件名称文件版本文件大小日期时间
Mscordacwks.dll2.0.50727.3068992,26416-Sep-200813:13
Mscorlib.dll2.0.50727.30684,546,56016-Sep-200813:13
Mscorwks.dll2.0.50727.30685,815,80816-Sep-200813:13
Windows 2000、 Windows XP 和 Windows Server 2003,x64 版本
文件名称文件版本文件大小日期时间平台
Mscordacwks.dll2.0.50727.3068992,26416-Sep-200813:13x86
Mscorlib.dll2.0.50727.30684,546,56016-Sep-200813:13x86
Mscorwks.dll2.0.50727.30685,815,80816-Sep-200813:13x86
Mscordacwks.dll2.0.50727.30681,767,94416-Sep-200810:33x64
Mscorlib.dll2.0.50727.30684,562,94416-Sep-200810:33x64
Mscorwks.dll2.0.50727.306810,079,74416-Sep-200810:33x64
Windows 2000、 Windows XP 和 Windows Server 2003,IA-64 版本
文件名称文件版本文件大小日期时间平台
Mscordacwks.dll2.0.50727.3068992,26416-Sep-200813:13x86
Mscorlib.dll2.0.50727.30684,546,56016-Sep-200813:13x86
Mscorwks.dll2.0.50727.30685,815,80816-Sep-200813:13x86
Mscordacwks.dll2.0.50727.30683,087,88016-Sep-200810:44IA-64
Mscorlib.dll2.0.50727.30684,005,88816-Sep-200810:44IA-64
Mscorwks.dll2.0.50727.306820,153,85616-Sep-200810:44IA-64

状态


Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

详细信息


重现问题的步骤

要重现此问题,创建 Microsoft Visual C# 项目,然后在已安装.NET Framework 3.5 SP1 的计算机上运行以下代码。
using System;namespace GetCustomModifiersBug
{
public interface IGenericInterface<T1, T2>
{
void GenericIfcMethod<T3>(T3 t3);
}
class Program
{
static void Main()
{

Type ifc = typeof(IGenericInterface<int, int>);
// Either of the following lines on their own will cause the problem
ifc.GetMethod("GenericIfcMethod").GetParameters()[0].GetOptionalCustomModifiers();
ifc.GetMethod("GenericIfcMethod").GetParameters()[0].GetRequiredCustomModifiers();

}
}
}

参考资料


有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
用于描述 Microsoft 软件更新的标准术语的824684说明