WinUI3移植WinForm项目遇Basler.Pylon.dll加载异常求助
WinUI3移植Basler Pylon相机项目的错误解决方法
x86平台:System.IO.FileNotFoundException(找不到Basler.Pylon.dll)
- 确认
Basler.Pylon.dll的复制到输出目录设置为「始终复制」,避免因WinUI3多级输出目录(如x86/Debug/net6.0-windows10.0.19041.0)导致dll未出现在exe同级目录。 - 检查引用的
Basler.Pylon.dll是否为纯x86版本,禁止混用x64版本的库文件。 - 手动复制Basler相机库的所有依赖dll(如
PylonCXPHelper.dll、PylonRuntime.dll等)到WinUI3项目输出目录,WinUI3的引用机制可能未自动同步WinForm项目中已加载的隐式依赖。
x64平台:System.TypeInitializationException(含C++模块加载失败、SEHException)
- 安装对应x64版本的Microsoft Visual C++ Redistributable,Basler Pylon库依赖特定版本的VC++运行时(如2019或2022版),需与库的编译环境匹配。
- 升级Basler Pylon库至支持.NET 5/6+的版本(如Pylon 7.x),旧版本Pylon可能仅兼容.NET Framework,与WinUI3的.NET环境冲突。
- 若手动引用原生库而非NuGet包:右键项目→属性→配置属性→C/C++→常规,添加Basler头文件路径;链接器→输入→附加依赖项添加对应x64版本的lib文件;若使用NuGet,确保安装的是x64专属包。
直接运行exe:Microsoft.ui.xaml.dll加载失败
- 确保目标机器安装了Windows App Runtime,调试版exe依赖调试运行时,建议用Release模式编译后再单独运行。
- 采用MSIX打包项目,打包过程会自动嵌入WinUI3所需的运行时依赖,部署后可解决模块缺失问题。
通用排查步骤
- 用
Dependency Walker(depends.exe)扫描exe和Basler.Pylon.dll,定位缺失的依赖项或x86/x64版本不匹配的文件。 - 手动删除项目的
bin和obj目录后重新生成,清理缓存的旧文件。 - 确认WinUI3项目的目标Windows版本(如Windows 10 19041+)与Basler库支持的系统版本兼容。
内容的提问来源于stack exchange,提问作者FUSE0604
相关产品推荐
相关产品推荐

