我想更多地了解点网核心支持。 我的基本理解是,如果我想在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核心。
答案 0 :(得分:10)
.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
。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