【问题标题】:Can .Net 4.6 run on linux.Net 4.6可以在linux上运行吗
【发布时间】:2017-08-04 14:10:18
【问题描述】:

我正在将一个 Web 项目从 DotNet 4.6 升级到 DotNetCore 2.0,并且我打算在 Linux 上运行这个应用程序。我想推迟将一些代码升级到 DotNetCore - 例如引用的 DLL。我发现您可以在此答案中引用 DotNetCore 中较旧的 DLL

Add .NETFramework 4.5 dll to .NETCore project

但是,我猜这不会让我在 Linux 上运行?是对的吗?有没有办法解决这个问题?

【问题讨论】:

    标签: .net linux asp.net-core


    【解决方案1】:

    如果此类 DLL 不包含任何 Windows 平台特定引用(WinForm、WPF、WCF、XAML、COM),您可以在 Linux 上运行此类 DLL:

    【讨论】:

    • 这不是唯一的限制。您引用的程序集不得使用任何在 .NET Standard 2.0 中不可用的 API!基本上,在 .NET Core / .NET Standard 中引用 .NET 4.5 库的能力是无用的,并且仅限于没有任何非 .NET Core 2.0 API 并且尚未为netstandard2.0 移植的库(即被遗弃/孤立的库)库,因为它们不再被积极维护,所以无法获得官方更新是出乎意料的)
    • 你是对的,由于限制,还有一些 API 在 Linux 上不可用。如果您需要使用旧库并且没有机会移植它们,它并不是真的没用。我在将 LightCore (github.com/juergengutsch/lightcore) 移植到 .NET Standard 2.0 并支持旧用法和框架时使用它
    • 我的特定 DLL 包含业务层和实用程序类型代码。我没有使用我知道的任何特定于 Windows 的 API。显然,早期测试是我的朋友。
    • @DannyEllisJr:您应该安装 .NET Portability Analyzer VS 2017 扩展,然后针对要与 .NET 2.0/.NET Standard 2.0 配置文件一起使用的程序集运行它。如果它显示任何不可用的 API,您可能会在使用它时遇到麻烦,需要先将其移植到 .NET Standard 2.0 或确保不从您的代码中调用 API(除非您可以访问源代码,否则这并不容易,但是您可以轻松地将其编译为 .NET Standard 2.0)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2015-05-10
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多