找不到应用程序依赖项清单中指定的程序集
An assembly specified in the application dependencies manifest was not found
所以我有一个 .NET Core 2.2 Web 应用程序。
我向其中添加了 EPPlus 库,现在,当它发布到 Azure(应用服务)时,它无法启动,我收到错误消息:
HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure
我通过在 Azure 中使用控制台 运行 和命令缩小范围:"dotnet my.project.dll" - 并得到实际错误:
An assembly specified in the application dependencies manifest
(my.project.deps.json) was not found:
package: 'Microsoft.Win32.SystemEvents', version: '4.5.0'
path: '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< / PublishWithAspNetCoreTargetManifest>
没有效果
有人有什么想法吗?
事实证明,这是我的错:(
Team City 是根据已发布的输出创建的 NuGet 包。但是 /runtimes 文件夹未包含在包中,因此从未作为站点的一部分发布。
我编辑了 nuspec 文件以将其包含在 /runtimes 中,一切正常。
我遇到了同样的问题。构建后,我通过 DOS 命令 copy
将所有文件复制到 "production" 目录,因此 "runtimes" 子文件夹中的文件丢失了。复制所有文件包括所有子目录(通过使用 xcopy
)解决了这个问题。
所以我有一个 .NET Core 2.2 Web 应用程序。 我向其中添加了 EPPlus 库,现在,当它发布到 Azure(应用服务)时,它无法启动,我收到错误消息:
HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure
我通过在 Azure 中使用控制台 运行 和命令缩小范围:"dotnet my.project.dll" - 并得到实际错误:
An assembly specified in the application dependencies manifest (my.project.deps.json) was not found: package: 'Microsoft.Win32.SystemEvents', version: '4.5.0' path: '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
其他尝试过的东西:
有人有什么想法吗?
事实证明,这是我的错:(
Team City 是根据已发布的输出创建的 NuGet 包。但是 /runtimes 文件夹未包含在包中,因此从未作为站点的一部分发布。
我编辑了 nuspec 文件以将其包含在 /runtimes 中,一切正常。
我遇到了同样的问题。构建后,我通过 DOS 命令 copy
将所有文件复制到 "production" 目录,因此 "runtimes" 子文件夹中的文件丢失了。复制所有文件包括所有子目录(通过使用 xcopy
)解决了这个问题。