gpt4 book ai didi

c# - 如何使用 Visual Studio 2019 创建 C# COM 对象

转载 作者:行者123 更新时间:2023-12-04 04:08:33 27 4
gpt4 key购买 nike

我已经从 Windows 7/Visual Studio 2015 升级到 Windows10/Visual Studio 2019。我希望创建一个可以从 Excel(365) VBA 代码调用的 C# COM 对象。

使用 Win 7/Visual Studio 2015,以下非常简单的代码编译为 C# 类库并创建一个我可以从 Excel 2013 VBA 成功调用的 COM 对象:-

using System.Runtime.InteropServices;
namespace TestLib {
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class C_Hello {
public string Hello() {
return "Hello";
}
}
}

在程序集信息中,我勾选了复选框“使程序集 COM 可见”,在构建信息中,我勾选了复选框“注册 COM 互操作

Excel 2013 VBA 代码同样简单:

Sub Test()
Dim x As TestLib.C_Hello
Set x = New TestLib.C_Hello
ActiveSheet.Range("C3").Value = x.Hello
End Sub

其中 TestLib 是在 Visual Studio 中创建的 C# COM 模块。

在Win 7/VS2015/Excel 2013环境下一切正常,但在Win 10/VS2019下转编译后出现Excel 365 VBA代码错误:-

Set x = New TestLib.C_Hello

错误信息

运行时错误“-2147221164 (80040154)”

类(class)未注册

谁能告诉我我必须做什么才能让它在 Windows 10/VS2019/Excel 365 环境中运行。? Windows 10 或 Visual Studio 2019 的处理方式不同吗?

最佳答案

确保 excel 的位数与您在 VS 中的构建匹配。您可能需要为项目添加 x86 或 x64 版本。

可以注册 AnyCpu 程序集,但 visual studio 不会为两者都使用“Register for COM interop”。您可以通过手动或从构建后脚本运行 32 位和 64 位版本的 regasm 来手动执行此操作。

否则,您可以使用 ProcMon 来检查 Excel 正在查找和未找到的注册或文件。但是,请注意,除非您熟悉运行时出现的“正常”错误,否则很容易解决转移注意力的问题。我建议按“路径”过滤包含“TestLib.C_Hello”,然后从那里追逐它。

关于c# - 如何使用 Visual Studio 2019 创建 C# COM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62134547/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com