.NET CLI如何在Linux上发布后运行应用程序

时间:2016-05-22 16:37:08

标签: asp.net-core-mvc .net-core .net-core-rc2

我花了大约4个小时调查,仍然无法找到如何运行已发布的应用程序(dotnet publish

现在我可以将源代码下载到我的远程计算机,然后调用dotnet builddotnet run - 然后我的应用程序按预期运行。但我想在没有源文件的情况下将DLL(或* .so?)发布到我的VPS。

官方文档说什么?在project.json中定义命令

"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://unix:/var/aspnet/HelloMVC/kestrel.sock",
}

但它是obsolette,不是吗?

默认样品怎么样?

在默认的VS2015示例解决方案中,他们使用的是publish-iis,完整的.NET框架和IIS服务器,但是没有关于Linux上的部署。

postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]

这是我的dotnet信息

.NET Command Line Tools (1.0.0-preview1-002702)

Product Information:
 Version:     1.0.0-preview1-002702
 Commit Sha:  6cde21225e

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.10586
 OS Platform: Windows
 RID:         win10-x64

.NET Core RC2

1 个答案:

答案 0 :(得分:11)

执行以下步骤(从RC2便携式应用程序开始;正常的应用程序):

  1. 删除"类型":"平台"来自所有依赖项的注释(因此它实际上是独立的,不再依赖于已安装的.NET Core平台)。
  2. 向project.json添加节点运行时(因此NuGet能够将必要的平台部件拉到本地计算机上)

    样品:

    "runtimes": {
      "osx.10.11-x64": { },
      "win10-x64": { },
      "ubuntu.14.04-x64": { }
    }
    
  3. dotnet restore(以确保新的运行时在本地可用)。

  4. dotnet build(如果还没有为便携式应用程序完成)
  5. dotnet publish -r ubuntu.14.04-x64(将其捆绑)
  6. 使用能够运行应用程序的特定于平台的dotnet命令查看结果目录。
  7. 我按照.NET Core documentation中的步骤进行了操作。