Экспорт функции из библиотеки .NET Standard 2.0C#

Место общения программистов C#
Ответить
Anonymous
 Экспорт функции из библиотеки .NET Standard 2.0

Сообщение Anonymous »

Я пытаюсь экспортировать функцию из библиотеки .NET 8.0. Для этого я использую проект экспорта 3F DLL (https://github.com/3F/DllExport).

Код: Выделить всё

public class Class1
{
[DllExport]
public static int AddOne(int x)
{
Console.WriteLine("Inside AddOne");
return x + 1;
}
}
Код тестовых программ .NET Core и .NET Framework следующий:

Код: Выделить всё

static void Main(string[] args)
{
Console.WriteLine("Hello, DotNetCore");

try
{
Console.WriteLine("1+1=" + AddOne(1));
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}

Console.ReadKey();
}

[DllImport("ClassLibrary.dll")]
private static extern int AddOne(int x);
Импорт DLL в тестовое приложение .NET Core и в .NET Framework приводит к ошибке:
.NET Core:

System.Runtime.InteropServices.SEHException (0x80004005): внешний компонент выдал исключение.
at ConsoleCore.Program.AddOne(Int32 x)

в ConsoleCore.Program.Main(String[] args) в C:\work\stackoverflow\core and framework\Console\ConsoleCore\Program.cs:line 12

.NET Framework:

System.IO.FileNotFoundException: не удалось загрузить файл или сборку «System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a» или одну из его зависимостей. Системе не удается найти указанный файл.
Имя файла: 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
в ConsoleApp.Program.AddOne(Int32 x)

в ConsoleApp.Program.Main(String[] args) в C:\work\stackoverflow\core and framework\Console\Console\Program.cs:line 17
=== Информация о состоянии предварительной привязки ===
LOG: DisplayName = System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
(полностью указано)
ЖУРНАЛ: Appbase = file:///C:/work/stackoverflow/core and framework/Console/Console/bin/Debug/
ЖУРНАЛ: Начальный PrivatePath = NULL
Вызов сборки: (Неизвестно) .
ЖУРНАЛ: Эта привязка запускается в контексте загрузки по умолчанию.

ЖУРНАЛ: Использование файла конфигурации приложения: C:\work\stackoverflow\core и framework\Console\Console\bin\Debug\Console.exe.Config

ЖУРНАЛ: Использование файла конфигурации хоста:

ЖУРНАЛ: Использование файла конфигурации компьютера из C:\Windows\ Microsoft.NET\Framework64\v4.0.30319\config\machine.config.

ЖУРНАЛ: Ссылка после политики: System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

ЖУРНАЛ: попытка загрузки нового URL-файла:///C:/work/stackoverflow/core и framework/Console/Console/bin/ Debug/System.Runtime.DLL.

ЖУРНАЛ: попытка загрузки нового URL-адреса file:///C:/work/stackoverflow/core and framework/Console/Console/bin/Debug/System.Runtime/System.Runtime.DLL.

ЖУРНАЛ: попытка загрузки нового файла URL :///C:/work/stackoverflow/core and framework/Console/Console/bin/Debug/System.Runtime.EXE.

ЖУРНАЛ: попытка загрузки нового URL-адреса file:///C:/work/stackoverflow/core and framework/Console/Console/bin/Debug/System.Runtime/System.Runtime.EXE.

Чего я хочу достичь в итоге? Мне нужна библиотека .NET Core DLL и ее функции, которые мне нужно использовать в библиотеке .NET Standard 2.0 (в данный момент мы не можем обновить библиотеку из-за устаревших зависимостей).
Полная версия готовое к клонированию решение находится здесь: https://github.com/JYPDWhite/DllExportTest
Редактирование: tl;dr;
Библиотека, написанная на языке . СЕТЬ 8.0 должна использоваться в библиотеке .NET Standard 2.0 через P/Invoke. Эта библиотека .NET Standard 2.0 позже используется в приложениях .NET Core и .NET Framework.
Приложение .NET Core в этом примере предназначено только для устранения неполадок и не является окончательным вариантом использования.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -0-library
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»