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, извлеките его и обменивайтесь с ним другими средствами, если он доступен, например, выставляя его как сервис.

Другие вопросы по тегам