问题描述
我看到一个问题,Visual Studio进程Microsoft.VisualStudio.Web.Host.exe
锁定了gRPC grpc_csharp_ext.x86.dll
的本机dll。
我们在Windows计算机(Windows10和Server)上的IIS中运行着一个.net Framework 4.6.1 Web应用程序。它使用gRPC并将其捆绑以下dll。
Grpc.Core.dll
Grpc.Core.Api.dll
grpc_csharp_ext.x64.dll
grpc_csharp_ext.x86.dll
据我所知,gRPC库在https://github.com/grpc/grpc/blob/2780136fcf9bd268aaddea74b115fbc2faa97c61/src/csharp/Grpc.Core/Internal/NativeExtension.cs#L83处为其架构加载了正确的dll,并且从未尝试过释放它。我相信这是可以的,因为一旦运行进程停止,一切都应该释放。
但是,如果您有在IIS中运行的应用程序并从Visual Studio附加调试器,然后尝试重建该应用程序,则Visual Studio会要求您停止调试,执行生成过程,并遇到以下问题,主要表现为:
"...\packages\Grpc.Core.2.29.0\runtimes\win\native\grpc_csharp_ext.x86.dll" to "bin\grpc_csharp_ext.x86.dll".
Exceeded retry count of 10. Failed. The file is locked by: "Microsoft.VisualStudio.Web.Host.exe (34932)"
"...\packages\Grpc.Core.2.29.0\runtimes\win\native\grpc_csharp_ext.x86.dll" to "bin\grpc_csharp_ext.x86.dll".
The process cannot access the file 'bin\grpc_csharp_ext.x86.dll' because it is being used by another process.
我在IIS锁定相同的dll时遇到了类似的问题,并且意识到针对gRPC https://github.com/grpc/grpc/issues/21867引发的这个问题,导致创建了Grpc_SkipNativeLibscopy
。通过添加预构建的应用程序池回收,可以缓解此问题。
然而,似乎没有办法解决此问题,唯一的行动方法似乎是取消Microsoft.VisualStudio.Web.Host.exe
进程。
任何人都可以帮助我们进一步阐明如何阻止这种情况的发生,或者找到减轻该问题的更好方法的方法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)