You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何消除Type Library Exporter针对Microsoft.Office.Interop.Excel.Range与Worksheet类型的警告?

如何消除Type Library Exporter针对Microsoft.Office.Interop.Excel.Range与Worksheet类型的警告?

我来给你几个实用的解决思路,不用每次都把参数转成object再强制转换:

  • 检查并注册互操作程序集
    这个警告很多时候是因为Excel互操作程序集没在系统里正确注册。你可以手动注册NuGet包对应的Microsoft.Office.Interop.Excel.dll

    1. 找到NuGet包安装路径下的该DLL(一般在项目的packages/Microsoft.Office.Interop.Excel.15.0.4795.1001/lib/net40目录里)
    2. 用管理员权限打开命令提示符,定位到.NET Framework的regasm.exe路径(比如C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe,根据你的.NET版本调整)
    3. 运行命令:regasm.exe /codebase "你的DLL完整路径"
  • 改用Excel互操作的接口类型
    Excel的WorksheetRange其实都有对应的底层接口:_Worksheet_Range。你可以把方法参数换成这些接口类型,比如把代码里的:

    Public Sub CreateCFTOutput(wsOutput As Worksheet, i As Integer, year As Integer, firstCell As Range, rtsInput As Range, fixedInterest As Range) _
        Implements IJupiterConnector.CreateCFTOutput
    

    修改为:

    Public Sub CreateCFTOutput(wsOutput As _Worksheet, i As Integer, year As Integer, firstCell As _Range, rtsInput As _Range, fixedInterest As _Range) _
        Implements IJupiterConnector.CreateCFTOutput
    

    这样类型库导出器能准确识别到接口的类型定义,就不会报找不到类型库的警告了。

  • 调整项目的COM可见性设置
    如果你的项目不需要对外暴露COM接口,可以右键项目→属性→应用程序→程序集信息,取消勾选“使程序集COM可见”。这样类型库导出器就不会去处理这些Excel互操作类型,警告自然就消失了。要是必须保留COM可见性,可以单独设置相关类的COM可见性,而非整个程序集。

  • 更新Interop.Excel NuGet包
    你当前使用的15.0.4795.1001版本可能存在兼容性问题,试试更新到更稳定的新版本(选择和你本地Excel版本兼容的包)。新版本通常会修复类型库导出的相关问题,不过更新后要注意检查代码里的类型引用是否需要调整。

备注:内容来源于stack exchange,提问作者MartinS

火山引擎 最新活动