.NET 6 WPF引用MWArray.dll实例化MATLAB编译DLL时抛出异常
解决.NET 6 WPF中引用MATLAB编译DLL的TypeLoadException问题
问题核心
报错根源是.NET 6已移除.NET Framework专属的System.Web程序集,而MATLAB R2022b的MWArray组件依赖其中的System.Web.UI.WebResourceAttribute类型。同时MATLAB R2022b的Library Compiler仅官方支持到.NET 5,直接在.NET 6环境中调用会触发依赖缺失异常。
可行解决方案
1. 降级项目至.NET 5
利用MATLAB R2022b对.NET 5的原生支持,规避版本兼容问题:
- 右键项目 → 属性 → 应用 → 目标框架选择
.NET 5 (Windows) - 重新引用
C:\Program Files\MATLAB\R2022b\toolbox\dotnetbuilder\bin\win64\netstandard2.0\MWArray.dll - 重新编译MATLAB库时勾选
.NET 5.0选项
2. 升级MATLAB至R2023a或更高版本
MathWorks在MATLAB R2023a中正式添加.NET 6支持,升级后:
- 使用新版本Library Compiler编译针对.NET 6的DLL
- 引用对应版本路径下的MWArray.dll
- 无需额外配置即可在.NET 6 WPF中正常调用
3. 配置.NET 6项目的兼容性模式
若无法降级或升级,可尝试通过项目配置启用部分.NET Framework兼容行为:
编辑项目的.csproj文件,添加兼容性配置:
<PropertyGroup> <TargetFramework>net6.0-windows</TargetFramework> <UseWPF>true</UseWPF> <EnableNETFrameworkCompatibility>true</EnableNETFrameworkCompatibility> </PropertyGroup>
同时安装兼容NuGet包(仅作尝试,部分类型可能仍无法适配):
Install-Package System.Web.HttpUtility -Version 4.3.0
4. 确认MWArray.dll版本正确性
确保引用的是netstandard2.0版本的MWArray.dll,避免混用.NET Framework 4.x版本的组件,防止依赖冲突。
内容的提问来源于stack exchange,提问作者Charles Roscoe
相关产品推荐
相关产品推荐

