C# 为什么我在安装VS2012/.Net 4.5之后在.Net 4.0 Assembly.GetCustomAttributes上获得ExecutionEngineeException?
就像标题一样简单。 我已经将一个解决方案从.Net 2-3.5升级到.Net 4,它运行良好,然后我安装了VS 2012和.Net 4.5,现在我在尝试使用以下代码从动态生成的DLL反映CustomAttributes时遇到了ExecutionEngineeException:C# 为什么我在安装VS2012/.Net 4.5之后在.Net 4.0 Assembly.GetCustomAttributes上获得ExecutionEngineeException?,c#,.net,visual-studio-2012,.net-assembly,system.reflection,C#,.net,Visual Studio 2012,.net Assembly,System.reflection,就像标题一样简单。 我已经将一个解决方案从.Net 2-3.5升级到.Net 4,它运行良好,然后我安装了VS 2012和.Net 4.5,现在我在尝试使用以下代码从动态生成的DLL反映CustomAttributes时遇到了ExecutionEngineeException: Assembly assembly = Assembly.LoadWithPartialName("DavesNamespace.Custom"); var attributes = assembly.GetCustom
Assembly assembly = Assembly.LoadWithPartialName("DavesNamespace.Custom");
var attributes = assembly.GetCustomAttributes(typeof(ChecksumAttribute), true);
我得到了一个异常,该异常包含或不包含为GetCustomAttributes指定的类型,但只有在该异常抛出时,程序集才被成功加载,并且如果我在其中插入断点,我实际上可以查看CustomAttributes集合
最初的.Net 2-3.5版本在安装vs2012后仍然有效
非常感谢您的帮助,我发现了vs2012中出现的一些问题,这些问题以ExecutionEngineeExceptions在线查看结束,但没有找到答案。
这个问题可以通过删除VS2012和.Net 4.5来解决,但由于我们打算在VS2013发布后在公司范围内迁移到VS2013,所以这并不是一个真正的解决方案
编辑:
在一个示例应用程序中发生了错误,即使该应用程序是以4.5为目标构建的,也会引发异常
在下面的注释中添加的堆栈跟踪(为空)我已经针对我们的特定情况解决了这个问题,尽管我认为根目录是.Net 4.5在DLL上读取CustomAttributes的方式的一个未记录的更改 解决方案是将设置的CustomAttributeBuilder从
AssemblyBuilder.Save()
[在填充程序集的所有内容之后]之前的最后一件事移动到AppDomain.CurrentDomain.DefinedDynamicAssembly()之后的第一件事[在填充任何内容之前]
引发异常的实际代码不需要更改,尽管我已经进行了重构,使用了LoadWithPartialName()
的替换项,它只是Load(),
这个解决方法仍然适用于LoadWithPartialName()
可能是在程序集内容之后添加自定义属性会将自定义属性放在错误的位置?但是这个问题是由MS记录的。你能发布异常和stacktrace吗?@mckjerral我来自.NET Framework兼容性团队。我想看看这个问题。你能通过微软网站的netfx45compat与我联系吗?如果你有代码来重现这个问题,那也太好了。谢谢Varun@jessehouwing{“抛出了类型为'System.executionEngineeException'的异常。”}HRESULT-2146233082 StackTrace null
在那里没有太多帮助@mckjerral&每个投票的人:我来自微软.NET框架兼容性团队。我想了解此问题对您的应用程序的影响。你能通过微软网站的netfx45compat与我联系吗?谢谢@瓦伦:我给那个地址发了电子邮件,但没有回复。我正在回复你现在发给我的电子邮件。