标题说明了一切。
百科:
最初只是一个Windows组件,称为Windows PowerShell,它 2016年8月18日,该公司成为开源和跨平台的 PowerShell Core的介绍。[4]前者基于.NET构建 框架,而后者在.NET Core上。
重点补充。
从我记得的内容来看,Powershell Core
应能够有效地调用Mono
。这是对的吗?
另见:
Running PowerShell from .NET Core
答案 0 :(得分:3)
从我记得的内容来看,Powershell Core应该能够有效地调用Mono。这是对的吗?
无论你的意思是什么,我暂时怀疑它。你能用.Net Core编译为Mono编写的非平凡代码,反之亦然吗?也许,但并非总是如此。你可以加载.Net Core为Mono编写的库,反之亦然吗?使用.Net Core 2.0,你可以认为能够做到不到一年的测试版(就像PowerShell Core不到一个月的测试版一样) 。所以,也许,但并非总是如此。您可以将Add-Type
与Mono代码一起使用并期望它运行吗?也许吧,但是你要用.Net Core编译它,而不是单声道。
如果你的意思是"从PowerShell Core,调用一个巧妙地使用Mono编写的编译程序。"在那种情况下,是的,你可以随时做到这一点。它是一个shell。你可以用它运行外部程序。
Mono和.Net Core是在Linux上运行的.Net CLR的两个实现,但它们并不保证始终兼容,并且它们不会实现相同的命名空间集。 .Net核心代码甚至不一定与.Net Framework源代码兼容。最好将它们视为同一语言的不同实现,例如Visual C ++ vs GNU C ++,或IBM Java vs Oracle Java。
随着时间的推移,它们将汇聚成一个支持单一的CLR标准(.Net标准),但我们在这个旅程的开始。 .Net Core 1.x非常简陋。 .Net Core 2.0充实,但它仍然非常非常早。 Mono现在是MS产品,但可能有些组件不能混合使用。 Mono和.Net Core(以及.Net Framework和Unity)最终应该支持.Net标准,这是EMCA标准,但它们从未打算100%完全相同。我怀疑当我们到达.Net Core 4左右时,我们将拥有" .Net Core"它实现了.Net Standard和" .Net Windows Framework"作为原始.Net框架中缺少的东西的扩展,也许是一个" .Net Linux Framework"在Linux上做同样的事情。