Microsoft.VisualStudio.Web.Host.exe在Visual Studio中锁定了grpc_csharp_ext.x86.dll

问题描述

我看到一个问题,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 (将#修改为@)