找不到应用程序依赖清单中指定的程序集

时间:2019-05-28 13:37:01

标签: azure asp.net-core .net-core epplus

因此,我有一个.NET Core 2.2 Web应用程序。 我向其中添加了EPPlus库,现在,当它发布到Azure(应用服务)时,它将无法启动,并且出现错误:

HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure

我通过在Azure中运行控制台和命令“ dotnet my.project.dll”缩小了范围,并得到了实际错误:

  

在应用程序依赖清单中指定的程序集   找不到(my.project.deps.json):       软件包:'Microsoft.Win32.SystemEvents',版本:'4.5.0'       路径:'runtimes / win / lib / netcoreapp2.0 / Microsoft.Win32.SystemEvents.dll'

Microsoft.Win32.SystemEvents.dll位于应用程序部署到的主wwwroot文件夹中。 但是我认为根本不存在整个runtimes / win / libs /文件夹。

my.project.deps.json文件具有如下所示的部分:

"Microsoft.Win32.SystemEvents/4.5.0": {
    "dependencies": {
      "Microsoft.NETCore.Platforms": "2.2.0"
    },
    "runtime": {
      "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll": {
        "assemblyVersion": "4.0.0.0",
        "fileVersion": "4.6.26515.6"
      }
    },
    "runtimeTargets": {
      "runtimes/win/lib/netcoreapp2.0/Microsoft.Win32.SystemEvents.dll": {
        "rid": "win",
        "assetType": "runtime",
        "assemblyVersion": "4.0.0.0",
        "fileVersion": "4.6.26515.6"
      }
    }
  }

如果我删除整个“ runtimeTargets”部分,则该应用程序可以运行! (好吧,我也必须对其他一些dll做同样的事情:System.Drawing.Common和System.Security.Cryptography.Pkcs)

但是,无论何时发布和发布文件,文件都会完全重新生成-因此,这不是可行的解决方案。 我也不知道文件的那部分是做什么的。保留它可能很重要。尽管它可以正常工作,但它并不是那么重要...

它是通过TeamCity构建和发布的-我不是流程专家,但是我认为正在运行的命令相当于:

dotnet publish my.proj.csproj --configuration RELEASE --no-restore --no-build

其他尝试过的方法: false 没有效果

有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。构建后,我通过DOS命令copy将所有文件复制到“生产”目录,因此缺少“运行时”子文件夹中的文件。复制所有文件(包括所有子目录)(使用xcopy)解决了该问题。

答案 1 :(得分:0)

事实证明,这是我的错:(

Team City从发布的输出中创建了一个NuGet包。但是/ runtimes文件夹未包含在软件包中,因此从未作为站点的一部分发布。

我编辑了nuspec文件,使其包含/ runtimes,并且一切正常。