【问题标题】:How to use/run .NET Framework dll/app from .NET Core WebAPI如何从 .NET Core WebAPI 使用/运行 .NET Framework dll/app
【发布时间】:2019-05-13 23:58:26
【问题描述】:

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

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

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-core asp.net-core-webapi


    【解决方案1】:

    事实上,它并非不兼容。 .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 应该可以帮助您克服任何剩余的困难,因此您可以稍后将您的项目重新定位。

    【讨论】:

    • 这些库来自 ERP 系统(不是我的)。我正在尝试做一个小的网络版本。由于 SQL 插入非常复杂,我不得不使用他们的 COM 对象来添加文档、客户、产品等。只有添加新的东西我必须这样做,所有的数据选择都是由 SQL 完成的。
    • 您不拥有它们这一事实并不重要。您使用 COM 的事实确实如此。您必须为您的核心应用程序以 .NET Framework 为目标,但这是完全可行的。我有一个自己与 COM 库通信的核心 API。
    • 就这么简单?我只需要添加我需要的所有 ERP 参考,它应该可以工作吗?诚实地?上次当我尝试使用 .NET Core 2.1 时,我什至无法构建项目。我只是假设不可能使用 .NET Framework dll 制作 .NET Core API,因为 Core 与 Framework 大不相同。
    • 先是 .NET Core,然后是 ASP.NET Core。 .NET Core 符合 .NET Standard 2.0,因此可以与符合 .NET Standard 2.0 的任何其他东西一起使用。虽然 .NET Framework 并非完全如此,但 C# 编译器会产生一个特殊异常,并且至少会try。但是,如果您使用任何非 .NET 标准 API,那么您的应用程序将会崩溃。 COM 就是这样一种 API。但是,ASP.NET Core 可以像 .NET Core 一样以 .NET Framework 为目标(您不限于 .NET Core,仅仅因为您使用的是 ASP.NET Core)。如果你以 .NET Framework 为目标,那就没问题了。
    • 好的。你能指导我为了让它工作我需要改变什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2021-04-30
    • 1970-01-01
    • 2021-03-02
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多