首页 > 解决方案 > 如何从 .NET Core WebAPI 使用/运行 .NET Framework dll/app

问题描述

有没有办法在 .NET Core WebAPI 中运行/使用 .NET Framework app/dll?我知道 .NET Core 不适用于 .NET Framework,所以我在询问某种解决方法。

我已经尝试过从 WebAPI 打开的 .NET Framework Console App,但我不确定这是否是个好主意。它在任何时候都不起作用,特别是当两个用户尝试同时运行它时。

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;

我不想为我的 API 使用 .NET Framework。我不想使用 RabbitMQ 和类似的,因为它需要安装几个组件。我需要在 .NET Core WebAPI 中使用 .NET Framework dll 中的一些方法。我无权访问 .NET Framework dll 代码。

标签: asp.net-coreasp.net-core-webapi

解决方案


事实上,这并非不相容。.NET Core 支持 .NET Standard 2.0,它具有足够广泛的 API 占用空间,也支持 .NET Framework 中的大多数内容。主要的例外情况很明显:Windows 特定的 API 显然不能跨平台工作,这意味着它们不能在 .NET Core 中工作。

因此,您的问题的答案是另一个问题:.NET Framework 库到底在做什么?您可以从 .NET Core 项目中添加对库的引用,但您会收到一条警告,告诉您它们可能无法正常工作。然后由您决定它们是否有效,如果一切正常,您可以取消警告。

如果有问题,那么您可以选择以 .NET Framework 而非 .NET Core 为目标。在面向 .NET Framework 时,您仍然可以使用 ASP.NET Core;你只会被绑定到 Windows,而不是能够跨平台部署。不过,这对您来说甚至都不是问题。此外,这可能只是暂时的情况。一旦发布,.NET Core 3.0 应该可以帮助您克服任何剩余的困难,因此您可以稍后将您的项目重新定位。


推荐阅读