asp.net core - ¿Qué significa compilationOptions.emitEntryPoint?
asp.net-core project.json (2)
Como se mencionó a continuación: Parece que es un indicador para el compilador que indica que el proyecto es una aplicación de consola en lugar de una biblioteca (a saber: una aplicación de consola debe contener public static void Main()
)
Se puede ver desde la source aquí.
En la nueva plantilla de aplicación web predeterminada RC1, notará que en la parte inferior de Startup.cs
hay un nuevo método con cuerpo de expresión que actúa como punto de entrada:
public static void Main(string[] args) => WebApplication.Run<Startup>(args);
Si elimina este método, a continuación, realice una compilación ( dnu build
) obtendrá un error:
error CS5001: Program does not contain a static ''Main'' method suitable for an entry point
Sin embargo, si cambia el emitEntryPoint
a false
e intenta compilar nuevamente, tendrá éxito. Esto se debe a que está creando una biblioteca en lugar de una aplicación de consola.
Acaba de instalar las herramientas rc1 y creó un nuevo proyecto web para ver qué ha cambiado en la plantilla.
Me di cuenta de que project.json ahora contiene:
"compilationOptions": {
"emitEntryPoint": true
}
Pero no está claro qué hace esto.
¿Alguien tiene alguna idea?
Veo esto en la source ;
var outputKind = compilerOptions.EmitEntryPoint.GetValueOrDefault() ?
OutputKind.ConsoleApplication : OutputKind.DynamicallyLinkedLibrary;
Parece que le dice al compilador si debe crear una aplicación de consola o una biblioteca.
Además, si crea una nueva biblioteca de clases (paquete) y una aplicación de consola (paquete) en VS2015 verá que project.json para la aplicación de consola incluye lo siguiente, mientras que la biblioteca de clases no lo hace;
"compilationOptions": {
"emitEntryPoint": true
}