是否可以创建一个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)]
未找到答案 0 :(得分:1)
COM仅在Windows上可用。 netstandard为许多平台定义了通用基础,例如Linux,macOS和支持Xamarin的移动平台。
因此,以netstandard为目标的COM组件没有意义。如果COM组件仅是项目的可选部分,其余部分应以netstandard为目标,则将其提取并通过其他可用方式与之通信,例如将其作为服务公开。