Linux上的.NET Core Runtime Package Store

时间:2018-03-14 03:18:42

标签: linux .net-core package runtime store

我创建了一个控制台应用程序并添加了Newtonsoft.json作为测试的参考。

按照这些步骤后,我将应用程序(netcoreapp2.0)发布到ubuntu.16.04-x64版本并将其部署到Ubuntu(16.04)机器上,当我运行控制台应用程序时,它始终显示以下错误甚至包存在于/ usr / local / share / dotnet / store

找不到应用程序依赖项清单(RuntimePackageConsole.deps.json)中指定的程序集: 包:' Newtonsoft.Json',版本:' 11.0.1' 路径:' lib / netstandard2.0 / Newtonsoft.Json.dll' 当使用以下目标清单文件发布应用程序时,此程序集应位于本地运行时存储中:artifact.xml

我将依赖json文件中的Newtonsoft.Json.dll的路径更改为绝对路径后,它就可以了。

有人在Linux上遇到过同样的问题吗?或者我怎样才能找出原因,为什么应用程序无法通过依赖json文件中的相对路径加载包?

1 个答案:

答案 0 :(得分:1)

在发布代码时,您似乎正在定位清单。

  

从.NET Core 2.0开始,可以针对目标环境中存在的一组已知软件包打包和部署应用程序。在某些情况下,优点是更快的部署,更低的磁盘空间使用和改进的启动性能。

     

此功能实现为运行时包存储,它是存储包的磁盘上的目录(通常位于macOS / Linux上的/ usr / local / share / dotnet / store和C:/ Program Files / dotnet / store在Windows上)。在此目录下,有用于体系结构和目标框架的子目录。文件布局类似于NuGet资产在磁盘上的布局方式:

     

目标清单文件列出运行时包存储中的包。开发人员在发布应用时可以定位此清单。目标清单通常由目标生产环境的所有者提供。

https://docs.microsoft.com/en-us/dotnet/core/deploying/runtime-store

因此,您可能需要查看您的环境并确保您的软件包商店确实拥有所需的库,或者您在没有清单的情况下发布。