发布代码到ubuntu linux之后的Asp.NET核心错误,在windows上开发

时间:2016-10-26 03:50:19

标签: asp.net-core asp.net-core-mvc .net-core ubuntu-16.04 coreclr

希望你能帮我解决这个奇怪的错误。我使用visual studio代码在Windows 10上开发了一个非常简单的ASP.NET Core Web应用程序。我运行了 dotnet publish 命令,并尝试从已创建的“publish”文件夹下运行该应用程序。我使用了命令 dotnet Project.dll 。它工作,我能够在端口5000上浏览localhost以查看应用程序。

然后我将“publish”文件夹的内容压缩并复制到运行Ubuntu 16.04的linux VM,但是当我尝试使用以下命令执行应用程序时,我在命令行上收到以下奇怪错误: { {1}} 即可。我正在使用ssh远程访问linux vm并执行上面的命令。

在命令行上看到的错误消息:

错误:找不到依赖项清单中指定的程序集 - package:'System.Net.NetworkInformation',version:'4.1.0',path:'runtimes / linux / lib / netstandard1.3 / System.Net .NetworkInformation.dll'

我使用以下链接在vm:https://www.microsoft.com/net/core#ubuntu

上安装.net核心

当我在Windows上dotnet Project.dll时,我看到: 1.0.0-preview2-003121 当我在Ubuntu上dotnet --version时,我看到: 1.0.0-preview2-003131

非常感谢您解决上述错误的任何帮助!

这是project.json文件:

dotnet --verison

2 个答案:

答案 0 :(得分:1)

您已创建了可移植应用程序,但未在Linux上安装.NET Core运行时。创建便携式应用程序时,必须安装运行时。

如果您创建自包含的应用程序,则无需安装运行时。

基本上当你使用

"Microsoft.NETCore.App": {
  "version": "1.0.0",
  "type": "platform"
}

它依赖于平台/运行时,您需要安装运行时但部署文件大小较小。

如果您删除"type": "platform",那么它是一个独立的,您还需要添加

 "runtimes": {
   "win10-x64": {},
   "osx.10.10-x64": {}
 }

使用您希望能够部署的所有平台的project.json。有了上述内容,您无法在Linux上运行它。

之后,您可以dotnet build/publish构建/捆绑/发布它。每个平台上面会有一个文件夹。

来源:http://docs.microsoft.com/en-us/dotnet/articles/core/deploying/index

答案 1 :(得分:0)

我在GitHub for .NET找到了答案。我将这些行添加到project.json依赖项:

"runtime.linux.System.Net.NetworkInformation": "4.1.0-beta-*",
"runtime.unix.System.Net.Security": "4.0.0-beta-23516"

这解决了我的Ubuntu发布问题。我没有任何Windows问题继续在IIS Express或Visual Studio中使用这些额外的依赖项进行调试。