希望你能帮我解决这个奇怪的错误。我使用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
答案 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中使用这些额外的依赖项进行调试。