Код: Выделить всё
public class Class1
{
[DllExport]
public static int AddOne(int x)
{
Console.WriteLine("Inside AddOne");
return x + 1;
}
}
Код: Выделить всё
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);
.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 ... et-framewo
Мобильная версия