面向 netstandard 的 COM 组件
COM component targeting netstandard
是否可以创建 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 服务器(旧版应用程序)。没关系。
现在,如果我将目标框架更改为 netstandard1.0
(或 1.1),编译时一切都会崩溃。
IDE 建议包含的所有 nugets 都没有解决构建问题,我在网上找不到相关信息。
我很好奇这是否可能以及这样做是否有任何主要优势。
一些编译错误:
ProgId
未找到
[ClassInterface(ClassInterfaceType.None)]
未找到
- 很多 ADODB class 定义也没有找到
COM 仅在 Windows 上可用。 netstandard 为许多平台定义了一个通用基础,例如 Linux、macOS 和支持 Xamarin 的移动平台。
因此,以 netstandard 为目标的 COM 组件没有意义。如果 COM 组件只是您项目的可选部分,其余部分应以 netstandard 为目标,则将其提取并通过其他可用方式与其通信,例如通过将其公开为服务。
是否可以创建 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 服务器(旧版应用程序)。没关系。
现在,如果我将目标框架更改为 netstandard1.0
(或 1.1),编译时一切都会崩溃。
IDE 建议包含的所有 nugets 都没有解决构建问题,我在网上找不到相关信息。
我很好奇这是否可能以及这样做是否有任何主要优势。
一些编译错误:
ProgId
未找到[ClassInterface(ClassInterfaceType.None)]
未找到- 很多 ADODB class 定义也没有找到
COM 仅在 Windows 上可用。 netstandard 为许多平台定义了一个通用基础,例如 Linux、macOS 和支持 Xamarin 的移动平台。
因此,以 netstandard 为目标的 COM 组件没有意义。如果 COM 组件只是您项目的可选部分,其余部分应以 netstandard 为目标,则将其提取并通过其他可用方式与其通信,例如通过将其公开为服务。