c# - .net 核心应用程序目标 Linux 上的 .net framework 4.5.2

标签 c# .net asp.net-core .net-4.5 .net-core

我想更多地了解点网核心支持。 我的基本理解是,如果我想在 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
  • .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/

相关文章:

c# - 从主动消息开始对话

c# - ILMerge:在一个 exe App.Config 中组合程序集

c# - 直接在 Visual Studio 项目中使用自定义控件

java - SOAP 响应编码所有字符串中的 '?' 个字符,而不是俄语 .Net 代理、Java 服务器(?)

.net - Bamboo 构建计划与部署计划

c# - string.GetHashCode() 唯一性和冲突

c# - .Net 标准的自定义 System.Web.HttpContext

C# 等效于 C++ map<string,double>

asp.net-core - dotnet-passbook 与 .net core 兼容吗?

asp.net-core - 使用 EF7 配置级联删除