web-dev-qa-db-fra.com

Que signifie compilationOptions.emitEntryPoint?

Je viens d'installer les outils rc1 et de créer un nouveau projet Web pour voir ce qui a changé dans le modèle.

J'ai remarqué que project.json contient maintenant:

"compilationOptions": {
    "emitEntryPoint": true
}

Mais on ne sait pas ce que cela fait.

Est-ce que quelqu'un a une idée?

27
SaphuA

Comme mentionné ci-dessous: Il semble que ce soit un indicateur du compilateur pour indiquer que le projet est une application console par rapport à une bibliothèque (à savoir: une application console doit contenir public static void Main())

Vous pouvez le voir dans le source ici.

Dans le nouveau modèle d'application Web par défaut RC1, vous remarquerez au bas de Startup.cs il existe une nouvelle méthode d'expression corporelle qui sert de point d'entrée:

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

Si vous supprimez cette méthode, effectuez une génération (dnu build) vous obtiendrez une erreur:

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

Toutefois, si vous modifiez l'indicateur emitEntryPoint en false et essayez de générer à nouveau, cela réussira. En effet, il crée une bibliothèque au lieu d'une application console.

25
armen.shimoon

Je vois cela dans le source ;

var outputKind = compilerOptions.EmitEntryPoint.GetValueOrDefault() ?
    OutputKind.ConsoleApplication : OutputKind.DynamicallyLinkedLibrary;

On dirait qu'il indique au compilateur s'il faut créer une application console ou une bibliothèque.

De plus, si vous créez une nouvelle bibliothèque de classes (package) et application console (package) dans VS2015, vous verrez que project.json pour l'application console comprend les éléments suivants, contrairement à la bibliothèque de classes;

"compilationOptions": {
  "emitEntryPoint": true
}
10
Stafford Williams