将.NET Core应用程序定向到Linux上的.NET Framework 4.5.2

4
我希望了解一下dot net core的支持情况。我的基本了解是,如果我想在Linux上运行一个.net应用程序,那么它需要使用.net core进行构建,并针对netcoreapp1.0框架进行定位以保证此功能。
1)我假设上述假设是正确的吗?
2)当我阅读各种在线文章时,比如这篇关于在.net core应用程序中引用现有.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)时,提到:

如果这个应用程序在 .NET Core 平台上运行,比如在 Linux 或 Mac 上,那么这段代码就不会被执行,但应用程序仍然在 Linux 或 MacOS 上运行。

运行和未执行之间有什么区别?如果我的初步理解是正确的,那么在 Linux 上使用 .net 4.5.2 选项运行时,我不希望应用程序完全无法运行。

有几个问题,但真正想了解 .net core 更多。


这句话实际上是在谈论代码,其中 Windows 特定部分包含在条件编译语句 #if NET452 中。 - NineBerry
并不是每篇博客文章中的所有内容都可以完全信任。有了官方文档,您就不需要浪费太多时间了。https://learn.microsoft.com/en-us/dotnet/articles/standard/choosing-core-framework-server - Lex Li
1个回答

10

.NET CoreASP.NET Core之间有所区别,你提到的文章是关于在.NET Framework上运行ASP.NET Core "应用程序"。让我尝试使用一些说明性语句来澄清:

  • .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 core应用程序,而是构建.net framework应用程序。

对于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方法时可能会在运行时失败。

  • 这回答了我6个问题,这些问题在我搜索了许多MSDN和谷歌之后立刻得到解决。非常感谢!对于我来说,.NET Core是最好的选择 ;) - WLFree

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接