You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10更新后VS2017调用Photoshop互操作DLL出现InvalidCastException异常

解决Windows 10更新后Visual Studio 2017中Photoshop COM组件类型转换失败问题

这个System.InvalidCastException的问题我之前帮不少开发者排查过,本质是Windows更新后Photoshop COM组件的注册或接口匹配出了问题,咱们一步步来搞定它:

问题根源

这个报错通常由两种情况导致:

  1. Windows更新可能重置了Photoshop COM组件的注册信息,使得Photoshop.ApplicationClass无法正确映射到_Application接口
  2. 你项目里引用的旧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接口调用失败

验证步骤

完成上述操作后,按以下步骤验证:

  1. 打开任务管理器,确保Photoshop没有在后台运行(结束所有相关进程)
  2. 重新编译并运行程序,检查是否还会抛出InvalidCastException

内容的提问来源于stack exchange,提问作者clementRO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:19:20