我想更多地了解点网核心支持。 我的基本理解是,如果我想在 Linux 上运行一个 .net 应用程序,那么它需要构建 .net 核心和目标 netcoreapp1.0 框架来保证这一点。 1) 我假设上述假设是正确的?
2) 当我在线阅读各种文章时,例如这篇关于在 .net 核心应用程序中引用现有 .net 框架项目的文章 ( https://www.hanselman.com/blog/HowToReferenceAnExistingNETFrameworkProjectInAnASPNETCore10WebApp.aspx ) 如果我这样做,大概应用程序只能在 Windows 而不是 Linux 上运行?
3) 在下面的文章中:
https://blogs.msdn.microsoft.com/cesardelatorre/2016/06/28/running-net-core-apps-on-multiple-frameworks-and-what-the-target-framework-monikers-tfms-are-about/
在使用 .net run 4.5.2 选项运行的上下文中(
dotnet run -f NET452
),它提到了:
If this app were running on the .NET Core Platform, let’s say on a Linux box or a Mac, this code won’t be executed, but the app would still be running on Linux or MacOS.
运行和不执行有什么区别?如果我最初的理解是正确的,那么通过在 Linux 上运行 .net 4.5.2 选项,我不会期望该应用程序根本无法运行。
感谢那里的几个问题,但真的想更多地了解 .net 核心。
最佳答案
.NET Core
之间是有区别的和 ASP.NET Core
你提到的文章是关于运行ASP.NET Core
.NET Framework
上的“应用程序” .让我尝试使用一些声明性语句来澄清这一点:
-
.NET Core
是跨平台运行时。 -
ASP.NET Core
是一组库,直到版本 1.1.* 可以运行 在两个.NET Framework
和.NET Core
. - 这意味着您可以创建一个
.NET Framework
应用程序(=> 例如net452
) 并使用ASP.NET Core
在这个应用程序中。 - CLI 工具适用于以
netcoreapp*
为目标的两个项目和net*
- 但是net*
目前仅适用于 Windows。
这意味着对于 netcoreapp1.*
,您不能引用为 .NET Framework 构建的任意库。如果您将目标框架更改为 net452
,您构建的不再是 .net 核心应用程序,而是 .net 框架应用程序。
对于 ASP.NET Core 2.0
这将会改变。再次声明:
-
ASP.NET Core 2.0
仍然是一组库,但它们只能在.NET Core 2.0
上使用而不是.NET Framework
- 请注意,在撰写本文时,这仍在讨论中:https://github.com/aspnet/Home/issues/2022
-
.NET Core 2.0
能够自由引用为.NET Framework
构建的库最新版本4.6.1
- 但是,如果某些库尝试使用在
.NET Core
上不可用的 API 方法,它们可能会在运行时失败。
- 但是,如果某些库尝试使用在
关于c# - .net 核心应用程序目标 Linux 上的 .net framework 4.5.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43875007/