面向netstandard的COM组件

时间:2018-06-28 10:53:47

标签: c# com .net-standard

是否可以创建一个C#项目来创建一个COM组件并以netstandard为目标?

我们有这个项目,COM组件可以正常工作:

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
    <TargetFramework>net45</TargetFramework>
</PropertyGroup>

<ItemGroup>
    <COMReference Include="ADODB">
    <Guid>{B691E011-1797-432E-907A-4D8C69339129}</Guid>
    <VersionMajor>6</VersionMajor>
    <VersionMinor>1</VersionMinor>
    <Lcid>0</Lcid>
    <WrapperTool>tlbimp</WrapperTool>
    <Isolated>False</Isolated>
    <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
</ItemGroup>

</Project>

有一个ADODB引用,因为我们需要以这种方式(旧版应用程序)访问SQL Server。没关系。

现在,如果我将目标框架更改为netstandard1.0(或1.1),那么在编译过程中一切都会松懈。

IDE建议包含的所有细节都不能解决构建问题,并且我无法在网络上找到相关信息。

如果能做到这一点,以及这样做是否有任何主要优势,我总是很好奇。


一些编译错误:

  • ProgId未找到
  • [ClassInterface(ClassInterfaceType.None)]未找到
  • 也找不到很多ADODB类定义

1 个答案:

答案 0 :(得分:1)

COM仅在Windows上可用。 netstandard为许多平台定义了通用基础,例如Linux,macOS和支持Xamarin的移动平台。

因此,以netstandard为目标的COM组件没有意义。如果COM组件仅是项目的可选部分,其余部分应以netstandard为目标,则将其提取并通过其他可用方式与之通信,例如将其作为服务公开。