2016-01-05 14 views
5

Sembra che un recente aggiornamento nelle build notturne di RC2 abbia cambiato il modo in cui i programmi vengono avviati. Dall'aggiornamento, ora mi viene presentato un errore durante l'esecuzione del seguente comando.Nessun tipo di 'Programma' adatto per un punto di ingresso

// "commands": { 
//  "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:1287" 
// } 

dnx --watch web 

'Microsoft.AspNet.Server.Kestrel' does not contain a 'Program' type suitable for an entry point Stopped listening. 

Startup.cs compila e ha i seguenti metodi.

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services, IHostingEnvironment env) 
    { ... } 

    public void Configure(IApplicationBuilder app, IApplicationLifetime lifetime) 
    { ... } 
} 

ciò che deve essere fatto per ottenere il programma per avviare con l'ultima nightly costruisce?

Ecco un esempio che riproduce il problema. https://github.com/roydukkey/moist/tree/stackoverflow-34615917

sdk: v1.0.0-rc2-16357

risposta

2

In aspnet/Hosting#521, multipla i punti di ingresso sono stati rimossi.

Precedentemente avevamo più punti di ingresso per le applicazioni web, tra cui in Hosting (Microsoft.AspNet.Hosting), server (ad esempio Microsoft.AspNet.Server.Kestrel) e l'applicazione stessa (ad esempio Startup.cs). Abbiamo rimosso i punti di ingresso in Hosting e nei server in modo che l'unico punto di ingresso in avanti provenga dall'applicazione. Ciò richiederà aggiornamenti a project.json compresa l'impostazione di emitEntryPoint su true in compilationOptions e l'impostazione commands in modo che punti all'assembly Startup. aspnet/Announcements#131

Per risolvere il problema le impostazioni commands deve puntare a un gruppo invece di elencare precedentemente valida configurazione, il server. Inoltre, l'impostazione emitEntryPoint deve essere abilitata. Entrambe queste impostazioni sono impostate da project.json.

"compilationOptions": { 
     "emitEntryPoint": true 
    }, 

    "commands": { 
-  "web": "Microsoft.AspNet.Server.Kestrel" 
+  "web": "Web" 
    } 

configurazioni server specifico si trovano ora nel hosting.json. Quanto segue è solo una configurazione di esempio.

{ 
    "server": "Microsoft.AspNet.Server.Kestrel", 
    "server.urls": "http://localhost:1234" 
} 

prega di fare riferimento al roydukkey/moist/tree/stackoverflow-34615917 al fine di visualizzare il flusso di lavoro in tutta questa domanda.

0

È necessario aggiungere una classe static che ha un Main metodo statico in esso. Da lì, è necessario ospitarlo. Come di seguito:

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var configuration = WebApplicationConfiguration.GetDefault(args); 

     var application = new WebApplicationBuilder() 
        .UseApplicationBasePath(Directory.GetCurrentDirectory()) 
        .UseConfiguration(configuration) 
        .UseStartup<Startup>() 
        .Build(); 

     application.Run(); 
    } 
} 

Non sono sicuro se obbligatorio, ma potrebbe essere necessario avere il qui sotto nella tua project.json così:

"compilationOptions": { 
    "emitEntryPoint": true 
} 

Nella versione completa:

{ 
    "version": "1.0.0", 
    "compilationOptions": { 
     "emitEntryPoint": true 
    }, 
    "dependencies": { 
     "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc2-*", 
     "Microsoft.AspNet.Hosting": "1.0.0-rc2-*" 
    }, 
    "frameworks": { 
     "dnx451": {}, 
     "dnxcore50": {} 
    } 
} 
+0

Sto usando "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc2- *", ecc. – roydukkey

+0

La soluzione dovrebbe essere la stessa (a meno che non ci sia un nuovo drastico cambiamento che non mi sorprenda: D), provalo e applica le tue versioni. – tugberk

+0

'WebApplication' non contiene una definizione per 'Esegui' Web.DNX 4.5.1 – roydukkey

Problemi correlati