COM-компонент, нацеленный на нестандарт
Можно ли создать проект 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 ответ
COM доступен только в Windows. Сетевой стандарт определяет общую базу для многих платформ, таких как Linux, macOS и мобильные платформы, поддерживающие Xamarin.
Поэтому нет смысла нацеливать COM-компонент на стандарт. Если COM-компонент является только необязательной частью вашего проекта, а остальные должны быть нацелены на netstandard, извлеките его и обменивайтесь с ним другими средствами, если он доступен, например, выставляя его как сервис.