Win10更新后VS2017调用Photoshop互操作DLL出现InvalidCastException异常
解决Windows 10更新后Visual Studio 2017中Photoshop COM组件类型转换失败问题
这个System.InvalidCastException的问题我之前帮不少开发者排查过,本质是Windows更新后Photoshop COM组件的注册或接口匹配出了问题,咱们一步步来搞定它:
问题根源
这个报错通常由两种情况导致:
- Windows更新可能重置了Photoshop COM组件的注册信息,使得
Photoshop.ApplicationClass无法正确映射到_Application接口 - 你项目里引用的旧Interop程序集(
Interop.Photoshop.dll和Interop.PhotoshopTypeLibrary.dll),和当前安装的Photoshop版本不兼容,或者生成时的配置存在偏差
具体解决方案
1. 重新注册Photoshop COM组件
先尝试修复组件注册问题:
- 找到Photoshop安装目录下的
Photoshop.exe(一般路径是C:\Program Files\Adobe\Adobe Photoshop [你的版本号]) - 以管理员身份打开命令提示符(CMD),执行以下命令(记得替换版本号):
regsvr32 "C:\Program Files\Adobe\Adobe Photoshop 2024\Photoshop.exe"
2. 重新生成适配当前版本的Interop程序集
旧的Interop DLL很可能和当前Photoshop版本不匹配,建议重新生成:
- 删除项目中已添加的
Interop.Photoshop.dll和Interop.PhotoshopTypeLibrary.dll引用 - 在Visual Studio里右键项目 → 添加 → 引用 → 切换到COM标签页
- 找到
Adobe Photoshop [你的版本号] Type Library,选中后添加引用 - 此时VS会自动生成适配当前Photoshop版本的Interop程序集,替换掉旧文件
3. 调整代码的实例化方式
避免直接使用ApplicationClass,改用接口方式实例化,兼容性更好:
原来的代码可能是这样:
Photoshop.ApplicationClass app = new Photoshop.ApplicationClass();
改成:
Photoshop._Application app = new Photoshop.Application();
或者用Activator.CreateInstance的方式,更灵活:
Type photoshopType = Type.GetTypeFromProgID("Photoshop.Application"); Photoshop._Application app = (Photoshop._Application)Activator.CreateInstance(photoshopType);
4. 匹配项目平台与Photoshop位数
确保项目的平台目标和Photoshop的位数一致:
- 若安装的是64位Photoshop:右键项目 → 属性 → 生成 → 平台目标选择
x64 - 若安装的是32位Photoshop:选择
x86 - 尽量避免用
Any CPU,这可能导致位数不匹配,触发COM接口调用失败
验证步骤
完成上述操作后,按以下步骤验证:
- 打开任务管理器,确保Photoshop没有在后台运行(结束所有相关进程)
- 重新编译并运行程序,检查是否还会抛出
InvalidCastException
内容的提问来源于stack exchange,提问作者clementRO
相关产品推荐
相关产品推荐

