AspNetCore.deps.json 包括 runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll 参考

JDB*_*ett 5 configuration runtime asp.net-core

几天来,我一直在寻找在 Azure 应用服务上运行的 AspNetCore Web api 项目的问题。

基本上我有一个非常小的 api 项目,在部署/启动时 - 我收到 500.30 ANCM 错误。足够隐秘 - 我从应用程序服务中提取事件日志,我发现:

<Data>Could not find inprocess request handler. 
     Captured output from invoking hostfxr: Error:
     An assembly specified in the application dependencies manifest 
     (SampleApp.Api.deps.json) was not found:
    package: 'System.Data.SqlClient', version: '4.6.1'
    path: 'runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll'
</Data>
Run Code Online (Sandbox Code Playgroud)

查看 SampleApp.deps.json - 果然我看到了:

"runtimeTargets": {
      "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll": {
        "rid": "unix",
        "assetType": "runtime",
        "assemblyVersion": "4.5.0.1",
        "fileVersion": "4.6.27618.1"
      },
      "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll": {
        "rid": "win",
        "assetType": "runtime",
        "assemblyVersion": "4.5.0.1",
        "fileVersion": "4.6.27618.1"
      }
    },
Run Code Online (Sandbox Code Playgroud)

我有一个类似(几乎相同)的项目,它在另一个应用程序服务上运行良好。如果运行

dotnet publish -c release /property:PublishWithAspNetCoreTargetManifest=true 
Run Code Online (Sandbox Code Playgroud)

(与我遇到问题的应用程序一起运行的相同发布命令)

我在otherapp.deps.json文件的运行时目标部分中根本没有看到此部分。

这是从哪里来的,我该如何摆脱它?

And*_*y V 0

我也有类似的情况

  • 一个有效的 aspnetcore web 应用程序
  • 和一个 dotnet cli 应用程序失败并出现与上面几乎相同的错误

对我有用的是跑步dotnet publish cli-proj -r win-x64。这将创建一个独立的捆绑包,它不依赖于任何已安装的运行时。然后我的部署将从我的网络服务器中获取所有文件bin/debug/netcoreapp3.1/win-x64/publish并将它们推送到我的网络服务器。

我确信安装的运行时应该提供这些文件,但它似乎工作得不太好。这“解决”了我的问题。