Как использовать / запустить .NET Framework dll / app из .NET Core WebAPI - PullRequest
1 голос
/ 13 мая 2019

Есть ли способ запустить / использовать приложение .NET Framework / dll в .NET Core WebAPI? Я знаю, что .NET Core не работает с .NET Framework, поэтому я спрашиваю о некотором обходном пути.

Я пробовал консольное приложение .NET Framework, которое открываю из WebAPI, но не уверен, что это хорошая идея. Он не работает в любое время, особенно когда два пользователя пытаются запустить его одновременно.

string path = hostingEnvironment.ContentRootPath + exePath;
string json = ConvertToBase64(object);

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = path;
p.StartInfo.Arguments = json;
p.StartInfo.RedirectStandardOutput = true;
p.Start();

string output = p.StandardOutput.ReadToEnd();

p.WaitForExit();

return output;

Я не хочу использовать .NET Framework для своего API. Я не хочу использовать RabbitMQ и аналогичные, потому что для установки требуется пара компонентов. Мне нужно использовать некоторые из библиотек .NET Framework в .NET Core WebAPI. У меня нет доступа к DLL-коду .NET Framework.

1 Ответ

1 голос
/ 13 мая 2019

По правде говоря, это не несовместимо. .NET Core поддерживает .NET Standard 2.0, который имеет достаточно широкую область применения API, что также поддерживает большинство вещей в .NET Framework. Основные исключения очевидны: специфичные для Windows API, которые, очевидно, не будут работать кроссплатформенными, а это значит, что они не будут работать в .NET Core.

Таким образом, ответ на ваш вопрос - другой вопрос: что именно делают библиотеки .NET Framework? Вы можете добавить ссылку на библиотеки из проекта .NET Core, но вы получите предупреждение о том, что они могут работать неправильно. Затем вы можете определить, работают они или нет, и если все в порядке, вы можете отключить предупреждение.

Если есть проблемы, вы можете выбрать .NET Framework вместо .NET Core. Вы все еще можете использовать ASP.NET Core, ориентируясь на .NET Framework; вы просто будете привязаны к Windows, а не сможете развернуть кроссплатформенность. Это может даже не быть проблемой для вас, хотя. Кроме того, это может быть только временная ситуация. .NET Core 3.0 должен преодолеть все оставшиеся трудности, как только он будет выпущен, так что, возможно, вы сможете перенастроить свой проект на это позже.

...