我如何使用COM公开.netstandard2.0库以在VB6中使用?

问题描述 投票:2回答:1

我有一个dotnet核心库,一个框架4.7.2库和一个vb6应用程序。

我想编写一个公共库供所有人访问,因此选择.netstandard2.0

我尝试了.netstandard2.0库和vb6之间的4.7.2框架包装器库。

但是我遇到了assembly binding problems

看着the docs,我看到

在.NET Core中,与.NET Framework相比,显着简化了将.NET对象暴露给COM的过程。

但是没有提及.netstandard2.0

即使我的项目使用的是.netstandard2.0,我仍然决定尝试遵循文档

我掌握了有关生成COM主机的说明,在这种情况下,应构建输出文件ProjectName.dll,ProjectName.deps.json,ProjectName.runtimeconfig.json和ProjectName.comhost.dll。

但是不会创建ProjectName.comhost.dll和ProjectName.runtimeconfig.json。

我在dotnet standard issue中看到Microsoft计划在“ Preview 4”中提供工具支持

我正在运行VS 16.4.5

[更新]

我决定尝试制作一个.net核心包装库并将其启用为com。

我能够通过nuget包将.netstandard添加到包装器库(我使用azure devops构建了.netstandard库)

当我构建包装库时,.bin,.deps.json,.pdb,.runtimeconfig.dev.json和.runtimeconfig.json文件在bin \ Debug \ netcoreapp3.1文件夹中创建。

但是.netstandard库文件中没有一个出现在bin \ debug文件夹中。

我将.netstandard库和.netcore包装器库复制到同一文件夹并运行

regsvr32 MyCoreComWrapper.comhost.dll  

但是没有创建.tlb文件,我需要能够从VB6使用它。>

我注意到文档中的以下内容

与.NET Framework中不同,.NET Core中不支持从.NET Core程序集生成COM类型库(TLB)。的指导是手动编写IDL文件或C / C ++标头COM接口的本机声明。

我发现了一些信息on github,但是希望逐步制作.tlb的指南

我曾考虑过改用后期绑定,但不确定如何在com库中使用它。

我有一个dotnet核心库,一个4.7.2框架库和一个vb6应用程序。我想编写一个公共库供所有人访问,因此选择.netstandard2.0我尝试了4.7.2框架...

com vb6 com-interop .net-standard-2.0
1个回答
0
投票

关于.NET标准,我可能是错的,但是我认为

© www.soinside.com 2019 - 2024. All rights reserved.