刚刚安装了 rc1 工具并创建了一个新的 Web 项目,以查看模板中发生了什么变化。
我注意到 project.json 现在包含:
"compilationOptions": {
"emitEntryPoint": true
}
但目前尚不清楚这是做什么的。
有人有想法吗?
刚刚安装了 rc1 工具并创建了一个新的 Web 项目,以查看模板中发生了什么变化。
我注意到 project.json 现在包含:
"compilationOptions": {
"emitEntryPoint": true
}
但目前尚不清楚这是做什么的。
有人有想法吗?
如下所述:看起来它是编译器的标志,表明该项目是控制台应用程序与库(即:控制台应用程序必须包含public static void Main()
)
你可以从这里的源代码中看到。
在新的 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
并尝试再次构建,它将成功。这是因为它正在创建一个库而不是控制台应用程序。
我在源代码中看到了这一点;
var outputKind = compilerOptions.EmitEntryPoint.GetValueOrDefault() ?
OutputKind.ConsoleApplication : OutputKind.DynamicallyLinkedLibrary;
看起来它告诉编译器是创建一个控制台应用程序还是一个库。
另外,如果您在 VS2015 中创建新的类库(包)和控制台应用程序(包),您将看到控制台应用程序的 project.json 包含以下内容,而类库不包含;
"compilationOptions": {
"emitEntryPoint": true
}