2016-01-05 18 views
5

Wygląda na to, że ostatnia aktualizacja nocnych wersji RC2 zmieniła sposób uruchamiania programów. Od czasu aktualizacji wyświetlany jest błąd podczas uruchamiania następującego polecenia.Brak odpowiedniego typu "Program" dla punktu wejścia

// "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. 

Kompilacja Startup.cs i ma następujące metody.

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

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

Co należy zrobić, aby program do uruchomienia z najnowszymi nightly buduje?

Oto przykład, który odtwarza problem. https://github.com/roydukkey/moist/tree/stackoverflow-34615917

SDK: v1.0.0-rc2-16357

Odpowiedz

2

W aspnet/Hosting#521, szpiczak punkty wejścia zostały usunięte.

Wcześniej miał wiele punktów wejścia dla aplikacji internetowych, w tym Hosting (Microsoft.AspNet.Hosting), serwery (np Microsoft.AspNet.Server.Kestrel) i samego zastosowania (np Startup.cs). Usunęliśmy punkty wejścia w Hostingu i serwerach, dzięki czemu jedyny punkt wejścia do przodu pochodzi z aplikacji. Będzie to wymagało aktualizacji project.json z ustawieniem emitEntryPoint na true pod compilationOptions i ustawieniem commands w celu wskazania zespołu uruchamiania. aspnet/Announcements#131

Aby rozwiązać ten problem ustawienia commands musi wskazywać na zespół zamiast wymieniając, poprzednio poprawną konfigurację serwera. Ponadto należy włączyć ustawienie emitEntryPoint. Oba te ustawienia są ustawione z poziomu project.json.

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

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

Określone konfiguracje serwerów znajdują się teraz w hosting.json. Poniżej znajduje się przykładowa konfiguracja.

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

Proszę odnieść się do roydukkey/moist/tree/stackoverflow-34615917 żeby zobaczyć obieg w całej tej sprawie.

0

Trzeba dodać static klasę, która ma statyczny Main metody w nim. Stamtąd musisz go hostować. Jak poniżej:

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(); 
    } 
} 

Nie wiem, czy obowiązkowe, ale może trzeba mieć poniżej w project.json także:

"compilationOptions": { 
    "emitEntryPoint": true 
} 

W pełnej wersji:

{ 
    "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

Używam "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc2- *" itd. – roydukkey

+0

Rozwiązanie powinno być takie samo (chyba że nastąpi drastyczna zmiana, która nie zdziwiłaby mnie: D), dajcie sobie spokój i zastosujcie swoje wersje. – tugberk

+0

"WebApplication" nie zawiera definicji "Run" Web.DNX 4.5.1 – roydukkey

Powiązane problemy