从控制台应用程序启动ASP.NET Core 1应用程序

时间:2016-02-29 15:56:00

标签: c# asp.net dnx

虽然dotnet cli还没有准备好使用Visual Studio,而dnu / dnx给了我大量额外不需要的库,我想做以下几点。

我想使用传统的.csproj方法使用命令行或控制台应用程序启动ASP.NET Core 1项目。 我创建了一个ASP.NET 4项目,包括所有依赖项,并且能够编译它。

第一次尝试。 起初我尝试将其编译成控制台应用程序并通过标准入口点启动:

    // Entry point for the application.
    public static void Main(string[] args) {
        WebApplication.Run<Startup>(args);
    }

它说:&#34;没有服务类型&#39; Microsoft.Extensions.PlatformAbstractions.IApplicationEnvironment&#39;已经注册。&#34;

这意味着dnx.exe可能通过PlatformServices.Create创建其他依赖项注入规则。 有人知道如何正确地做到这一点吗?

第二次尝试 我把它编译成dll并尝试通过dnx.exe启动它,这给了我错误&#34;错误:无法加载应用程序或执行命令&#39; Microsoft.AspNet.Hosting&#39;。可用命令:web。&#34;。

这是我的project.json:

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },
  "webroot": "wwwroot",
  "commands": {
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.Kestrel --server.urls http://*:5004"
  },
  "frameworks": {
    "dnx451": {}
  },
  "entryPoint": "ManagementConsoleWeb",
  "loadable": false
}

那么正确的方法是什么?有可能吗?

2 个答案:

答案 0 :(得分:0)

这里有一些想法。

  1. ASP.NET Core 1需要DNX引导才能工作。是的,它在.NET 4.5.2下运行,但DNX是必须的。所以基本上很奇怪你可以在.csproj net451中引用ASP.NET Core 1库。

  2. Nuget下的DN45引导程序库不适用于net451名字对象。因此,您无法从.csproj

  3. 引用它们

    这意味着您无法使用传统的.csproj类库或可执行方法来调试ASP.NET Core 1。当然,您可以随时连接到正在运行的应用程序,但这并不方便。

    因此,我们的团队现在正在使用针对NET CORE 1的DNX引导程序,但我们提供.csproj构建的输出,直到RC2发布。

答案 1 :(得分:0)

ASP.NET Core 1.0使用IHostingEnvironment hostingEnvironment而不是IApplicationEnvironment applicationEnvironment。 详细了解the ASP.NET Core Migration document