.net - .Net Core 是否生成与标准 .Net 相同的 IL?

标签 .net .net-core

我们有 this announcement .Net Core 被重命名为 1.0(令人困惑,但很好,无论如何)。汉塞尔曼在其中指出

It doesn't yet support VB or F#.


这让我觉得我错过了一些东西。我的逻辑如下。
以两个简单的 Hello World 应用程序为例,一个在 C# 中,另一个在 VB 中。假设您保持简单,在使用标准 MSBuild/.NET 框架进行编译时,您应该获得相同的 IL。我的理解是,您可以让 .Net 核心运行相同的 dll,因为它在该级别都是 IL。那为什么说它不支持VB呢?是不是除了简单的情况(您可能会引用特定于 VB 的东西)之外它不支持它?或者是为 .Net Framework 和 .NET Core 编译时生成的实际 IL 不同,并且还没有 VB/F# 编译器?

最佳答案

是的,它生成相同的 IL

(我忍不住回答这么简单)

尽管如此,对于 VB 部分:关于 VB 支持:在 .NET Core 上运行需要一个编译器(在 Roslyn 中实现),一个 CLI 命令 dotnet-compile-vb (尚未实现...对于 F#,社区现在已经交付了它)和支持的版本 Microsoft.VisualBasic (在corefx 中实现)。我想 VisualBasic 支持的要点与例如相同ASP.NET SignalR。代码 95% 都在那里,它可以运行,但没有经过官方测试和支持。这是时间问题而不是技术问题。

恕我直言:考虑到 Microsoft.VisualBasic程序集在那里并且 IL 是相同的,理论上它甚至可以执行编译的 VB 程序集,只要编译器使用基于 System.Runtime 的 Core 平台。

PS 2019 年 5 月:他们刚刚宣布移植大部分 VB .NET 运行时

关于.net - .Net Core 是否生成与标准 .Net 相同的 IL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34906969/

相关文章:

async-await - 为什么这个 xunit 测试死锁(在单个 CPU 虚拟机上)?

Azure函数: How to add row to cloud table on blob creating?

c# - RDLC 中递归数据的阶梯式报告

c# - 通过 PHP 与 .net 通信

c# - 如何将 System.IO.Packaging.Package 转换为 HTML?

c# - 如何将流/字符串中的 mht 加载到 WebBrowser 控件中?

c# - .Net Core TFS 2017 构建在 appsettings.json 文件中丢失了一些应用程序设置

.net - 如何浏览 Websphere MQ 消息而不删除它?

C#,自定义异常的使用

.net-core - 无法将我的解决方案从 v2.1.0 升级到 v2.1.3