compilationOptions.emitEntryPoint 是什么意思?

What does compilationOptions.emitEntryPoint mean?

刚刚安装了 rc1 工具并创建了一个新的 web 项目,看看模板中有什么变化。

我注意到 project.json 现在包含:

"compilationOptions": {
    "emitEntryPoint": true
}

但不清楚这是做什么的。

有人知道吗?

我在 source;

中看到了这个
var outputKind = compilerOptions.EmitEntryPoint.GetValueOrDefault() ?
    OutputKind.ConsoleApplication : OutputKind.DynamicallyLinkedLibrary;

看起来它告诉编译器是创建控制台应用程序还是库。

此外,如果您在 VS2015 中创建新的 Class 库(包)和控制台应用程序(包),您会看到控制台应用程序的 project.json 包括以下内容,而 Class图书馆没有;

"compilationOptions": {
  "emitEntryPoint": true
}

如下所述:它看起来像是编译器的一个标志,表明该项目是控制台应用程序还是库(即:控制台应用程序必须包含 public static void Main()

你可以从source这里看到。

在新的 RC1 默认 Web 应用程序模板中,您会注意到 Startup.cs 底部有一个新的表达式主体方法作为入口点:

public static void Main(string[] args) => WebApplication.Run<Startup>(args);

如果删除此方法然后执行构建 (dnu build),您将收到错误消息:

error CS5001: Program does not contain a static 'Main' method suitable for an entry point

但是,如果将 emitEntryPoint 标志更改为 false 并尝试再次构建,它将成功。这是因为它正在创建一个库而不是控制台应用程序。