入口点没有合适的“程序”类型

时间:2016-01-05 15:58:08

标签: asp.net-core

似乎最近每晚RC2版本的更新改变了程序启动的方式。自更新以来,我现在在运行以下命令时出现错误。

// "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编译并具有以下方法。

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

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

需要做些什么才能让程序启动最新的nightly版本?

以下是重现此问题的示例。 https://github.com/roydukkey/moist/tree/stackoverflow-34615917

sdk:v1.0.0-rc2-16357

2 个答案:

答案 0 :(得分:2)

aspnet/Hosting#521中,删除了多个入口点。

  

以前我们有多个Web应用程序入口点,包括托管(Microsoft.AspNet.Hosting),服务器(例如Microsoft.AspNet.Server.Kestrel)和应用程序本身(例如Startup.cs)。我们已经删除了Hosting和服务器中的入口点,因此唯一的入口点是来自应用程序。这需要更新project.json,包括在emitEntryPoint下将compilationOptions设置为true,并将commands设置为指向启动程序集。 aspnet/Announcements#131

要解决此问题,commands设置需要指向程序集,而不是列出以前有效的服务器配置。此外,需要启用emitEntryPoint设置。这两个设置均来自project.json

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

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

特定服务器配置现在位于hosting.json。以下只是一个示例配置。

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

请参阅roydukkey/moist/tree/stackoverflow-34615917以查看整个问题的工作流程。

答案 1 :(得分:0)

您需要添加一个static类,其中包含静态Main方法。从那里,你需要托管它。如下所示:

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

不确定是否是强制性的,但您可能还需要在project.json中使用以下内容:

"compilationOptions": {
    "emitEntryPoint": true
}

完整版:

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