我在ASP.NET Core.NET 6应用程序中使用本机代码DLL。我已经为Windows编译了一个DLL,并为Linux编译了一个.so。我使用DLLImport属性调用它,.NET加载程序通常能够在Windows和Linux上找到该文件。本机代码DLL与编译的.NET代码的其余部分一起复制到应用程序输出目录中。
该应用程序既可以在Windows上运行,也可以在Ubuntu上的VM测试安装上运行。但是,在Azure应用程序服务(Linux)上运行时,我收到错误:
无法加载共享库‘mylib’或其依赖项之一。为了帮助诊断加载问题,请考虑设置LD_DEBUG环境变量:libmylib:无法打开共享对象文件:没有这样的文件或目录
使用以下发布参数通过Azure DevOps管道部署应用程序:
参数:‘--配置$(BuildConfiguration)-r Linux-x64--自包含TRUE--输出$(Build.ArtifactStagingDirectory)’
Azure DevOps管道能够为应用程序运行单元测试,包括那些调用本机库的应用程序。
我使用了SSL和Bash来检查Azure App Service中的文件系统,我可以看到libmylib.so与编译后的.NET代码一起出现在目录中。
我尝试将其复制到/usr/local/lib,但仍然不起作用。
我需要做什么才能在Azure应用服务中成功调用此文件?我会不会因为缺少其他依赖项而收到该错误?
1条答案
按热度按时间hwamh0ep1#
你可以登录Kudu站点,站点URL应该是这样的:
然后单击webssh,然后运行命令进行安装。
如果不起作用,您可以运行
apt-get update
和apt-get install g++
。有关更多详细信息,请查看我测试的测试步骤。我还有一个变通办法:
您可以使用docker容器创建WebApp。你只要确保它在你所在的地方运行良好即可。