Linux上的.net核心应用程序目标.net框架4.5.2

时间:2017-05-09 16:17:08

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

我想更多地了解点网核心支持。 我的基本理解是,如果我想在Linux上运行.net应用程序,那么需要构建.net核心和目标netcoreapp1.0框架来保证这一点。 1)我假设上述假设是正确的?

2)当我在线阅读各种文章时,例如关于在.net核心应用程序(https://www.hanselman.com/blog/HowToReferenceAnExistingNETFrameworkProjectInAnASPNETCore10WebApp.aspx)中引用退出.net框架项目的文章 如果我这样做,大概应用程序只能运行在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运行4.5.2选项运行的上下文中( dotnet run -f NET452),它被提及:

  

如果这个应用程序在.NET核心平台上运行,让我们说在Linux机器或Mac上,这个代码将不会执行,但应用程序会   仍然在Linux或MacOS上运行。

运行和不执行之间的区别是什么?如果我最初的理解是正确的,那么通过在Linux上运行.net 4.5.2选项,我不希望应用程序根本不运行。

在那里感谢一些问题但是真的想更多地了解.net核心。

1 个答案:

答案 0 :(得分:10)

.NET CoreASP.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* - 但netcoreapp1.*目前仅适用于Windows。

这意味着对于net452,您不能引用为.NET Framework构建的任意库。如果将目标框架更改为ASP.NET Core 2.0,则不再构建.net核心应用程序,而是构建.net框架应用程序。

对于ASP.NET Core 2.0,这将会发生变化。再说一些陈述:

  • .NET Core 2.0仍然是一组库,但它们只能在.NET Framework上使用,而不能在.NET Core 2.0上使用
  • .NET Framework能够自由引用为4.6.1版本.NET Core构建的库
    • 但是,如果某些库尝试使用std::wstring finalPath = itsPath.substr(0,ls+1); 1 operator new(unsigned long) + 37 (libc++abi.dylib + 124485) [0xa0339645] 2 1 malloc + 29 (libsystem_malloc.dylib + 3997) [0xa1829f9d] 2 1 malloc_zone_malloc + 116 (libsystem_malloc.dylib + 7243) [0xa182ac4b] 2 1 default_zone_malloc + 3 (libsystem_malloc.dylib + 67909) [0xa1839945] 2 *1 thread_exception_return + 0 (kernel + 632362) [0xffffff800029a62a] (runnable) 2
    • 上未提供的API方法,则可能会在运行时失败