刚刚安装了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中创建新的类库(Package)和控制台应用程序(Package),则您将看到控制台应用程序的project.json包括以下内容,而类库则没有;
"compilationOptions": {
"emitEntryPoint": true
}