转 C# .NET4.0 混合模式程序集异常
1.引用Microsoft.DirectX.dll和Microsoft.DirectX.Directsound.dll这2个文件。
2.项目属性里边,把目标平台改成X86。
3.App.Config修改下:
1 <?xml version="1.0"?> 2 <configuration> 3 <startup useLegacyV2RuntimeActivationPolicy="true"> 4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 5 </startup> 6 </configuration>
在.NET 4.0 下使用 Dirext3D 托管库,出现“混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。”异常信息,查看程序集Microsoft.DirectX.dll、Microsoft.DirectX.Direct3D.dll、Microsoft.DirectX.Direct3DX,发现其.NET 运行时版本时v1.1.4322,也就是说D3D托管库是在 .NET v1.1 版本下编译生成的。
在.NET4.0以前,由于程序运行环境本质还是.NET2.0,并且.NET2.0兼容.NET1.0和1.1,但在升级到.NET4.0时,.NET的内核作了重大调整,以前在.Net2.0或.net3.5中生成的程序集,如果要在.net4.0下运行,需要在配置文件中指定此应用程序支持的公共语言运行时版本和启用 .NET Framework 2.0 运行时激活策略,相应的App.config如下:
1 <?xml version="1.0"?> 2 <configuration> 3 <startup useLegacyV2RuntimeActivationPolicy="true"> 4 <supportedRuntime version="v4.0"/> 5 </startup> 6 </configuration>
参考自MSDN,具体地址:http://msdn.microsoft.com/zh-cn/library/bbx34a2h.aspx
转自:http://blog.csdn.net/shenyc/article/details/7872300