netcore 2.2 подключить стороннюю библиотеку на NetFramework 4.5.2

152
07 августа 2021, 12:00

Для проекта на netcore 2.2 понадобилось использовать библиотеку скомпилированную под X86 NetFramework 4.5.2 Библиотека это обертка над С++ (Qt). Библиотека нормально работала для WinForms (под X86 NetFramework 4.5.2).

Версия netcore x64 на продакшене, поэтому попросил разрабов пере собрать под X64.

Разработчики там ленивые и могут отбрить)) я заранее хочу все варианты понять.

  1. А можно им пере собрать под netcore 2.2 (x64)
  2. Если будет под X64 NetFramework 4.5.2 - нормально ли запустится на netcore 2.2?

информация про сборку

using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
// Assembly LedScreenLibNetWrapper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0ba943bd8ad3b6d1
// MVID: 62773361-C1A1-44D9-AA06-BDF34E2154E3
// Assembly references:
// mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// Module references:
// LedScreenLib1.dll
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("LedScreenLibNetComWrapper")]
[assembly: AssemblyDescription("LedScreenLibNetComWrapper")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("SibLed")]
[assembly: AssemblyProduct("LedScreenLibNetComWrapper")]
[assembly: AssemblyCopyright("Copyright ©  2017")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(true)]
[assembly: Guid("5c3ecc53-aa5a-4b04-87db-22af4777e5ec")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.5.2", FrameworkDisplayName = ".NET Framework 4.5.2")]
[assembly: AssemblyVersion("1.0.0.0")]
Answer 1

В общем случае ответ будет: нет, библиотека собранная для .NET Framework с .NET Core ни какой версии работать не будет. Не говоря уже о возможной разнице в архитектуре (x86|x64).

Подобные связки компилируются без ошибок, если руками прописать все связи в проекте (включая неявные зависимости) и, в исключительных случаях, даже могут работать, но кроссплатформенность практически исключена и надежность под большим вопросом.

Вашу библиотеку нужно повторно собирать именно для .NET Core или, хотя бы, NET Standard, что, скорее всего, потребует изменить часть существующего кода, т.к. библиотеки базовых классов у .NET Framework и .NET Core отличаются, местами существенно.

Ну и остается открытым вопрос об использовании COM. Если целевая платформа windows, то ни каких вопросов, а с *nix будут проблемы, хотя вроде как были попытки прикрутить COM к *nix, но получилось ли что-то кроме эмулятора Wine, я не в курсе.

READ ALSO
Woocommerce Storefront. Добавить несколько цен в товар

Woocommerce Storefront. Добавить несколько цен в товар

В товаре предусмотрено 3 цены, в зависимости от размераВозле каждой цены кнопка "в корзину"

98
Прошу совета по разработке Cordova

Прошу совета по разработке Cordova

Хочу сделать мобильное кросс-платформенное приложение как instagramФункционал: загрузка фото, профили, лента, лайки и подобное

131
Форма поиска постов Ajax c выдачей количества результатов

Форма поиска постов Ajax c выдачей количества результатов

Всем приветИмеется на сайте Wordpress такая функция поиска ajax

108