2016-01-05 20 views
5

Dường như bản cập nhật gần đây trong bản dựng RC2 hàng đêm đã thay đổi cách chương trình được khởi động. Kể từ khi cập nhật, tôi hiện đang gặp lỗi khi chạy lệnh sau.Không có loại 'Chương trình' phù hợp cho điểm nhập

// "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 biên dịch và có các phương pháp sau.

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

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

Cần phải làm gì để chương trình bắt đầu với bản dựng nightly mới nhất?

Dưới đây là ví dụ mô phỏng sự cố. https://github.com/roydukkey/moist/tree/stackoverflow-34615917

sdk: v1.0.0-rc2-16357

Trả lời

2

Trong aspnet/Hosting#521, nhiều các điểm nhập đã bị xóa.

Trước đây chúng tôi đã có nhiều điểm nhập cảnh cho các ứng dụng web bao gồm trong Hosting (Microsoft.AspNet.Hosting), máy chủ (ví dụ Microsoft.AspNet.Server.Kestrel) và bản thân ứng dụng (ví dụ Startup.cs). Chúng tôi đã loại bỏ các điểm vào trong Hosting và các máy chủ để điểm vào duy nhất di chuyển về phía trước là từ ứng dụng. Thao tác này sẽ yêu cầu cập nhật cho số project.json bao gồm thiết lập emitEntryPoint thành true theo compilationOptions và đặt commands để trỏ đến hội đồng Khởi động. aspnet/Announcements#131

Để khắc phục sự cố, cài đặt commands cần trỏ đến lắp ráp thay vì liệt kê cấu hình máy chủ, hợp lệ trước đó. Ngoài ra, cần phải bật cài đặt emitEntryPoint. Cả hai cài đặt này được đặt từ project.json.

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

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

Cấu hình máy chủ cụ thể hiện được đặt trong hosting.json. Sau đây chỉ là một cấu hình ví dụ.

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

Vui lòng tham khảo roydukkey/moist/tree/stackoverflow-34615917 để xem quy trình làm việc trong suốt câu hỏi này.

0

Bạn cần phải thêm một lớp static trong đó có một Main phương pháp tĩnh trong nó. Từ đó, bạn cần phải lưu trữ nó. Như dưới đây:

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

Không chắc chắn nếu bắt buộc nhưng bạn có thể cần phải có dưới đây trong project.json của bạn cũng như:

"compilationOptions": { 
    "emitEntryPoint": true 
} 

Trong phiên bản đầy đủ:

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

Tôi đang sử dụng "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc2- *", v.v. – roydukkey

+0

Giải pháp nên giống nhau (trừ khi có sự thay đổi mạnh mẽ mới sẽ không làm tôi ngạc nhiên: D), cho đi này và áp dụng các phiên bản của bạn. – tugberk

+0

'WebApplication' không chứa định nghĩa cho 'Chạy' Web.DNX 4.5.1 – roydukkey

Các vấn đề liên quan