找不到应用程序依赖项清单 (MyApp.deps.json) 中指定的程序集:

An assembly specified in the application dependencies manifest (MyApp.deps.json) was not found:

我的项目是使用 SDK 3.1.101Azure Pipelines 中构建的,没有任何 errors/warnings,但是在部署到主机 (Ubuntu 18.04) 之后,我收到错误:

Error:
    An assembly specified in the application dependencies manifest (MyApp.deps.json) was not found:
        package: 'Microsoft.Data.SqlClient', version: '1.0.19269.1'
        path: 'runtimes/unix/lib/netcoreapp2.1/Microsoft.Data.SqlClient.dll'

一些调查指出问题来自 Microsoft.EntityFrameworkCore.SqlServer,它引用了 Microsoft.Data.SqlClient

看起来它试图从 v2.1 中找到库,对我来说有点奇怪 - 但它是 LST,所以也许...

最初在主机上只有 aspnetcore-runtime-3.1,所以,我认为通过安装 v2.1 可能会解决问题,并安装了 aspnetcore-runtime-2.1,然后安装了两个版本的 SDK,但到目前为止没有任何帮助:(

有什么解决办法吗?

找到了解决方法!

通过查看我项目的 ./bin/Debug/netcoreapp3.1/ 目录,发现即使我在 Windows 上构建它,它仍然会创建 runtimes/unix 目录并将丢失的 DLL 放在那里Ubuntu.

因此,通过手动将所有内容从 runtimes/unix 上传到部署机器,进入我的应用程序的 CONTENT_ROOT - 解决了它

P.S.
仍然不知道为什么在部署过程中没有上传它。
但这是另一个故事了;)

我通过更改

修复了它
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1" PrivateAssets="All" />

进入

<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1" />

将应用程序升级到 .NET Core 后,我遇到了同样的问题。 旧版本的应用程序只需要 DLL 文件以及要部署的 EXE。所以我只是做了同样的事情,这个 运行 在我自己的机器上很好,但是当 运行 从 VM 中使用相同的应用程序时,我在问题中遇到了错误。

仔细查看错误后,我尝试将 运行times 文件夹复制到 VM,这解决了我的问题。

我仍然不清楚为什么应用程序可以在我的机器上 运行 而没有原位的 运行times 文件夹。