当一个 .NET 程序集被部署到 GAC 并且目标文件被锁定时,Windows 将它保存在我最能猜到的某种“程序集炼狱”中 - c:\windows\assembly\temp
.
使用 Process Explorer 在搜索可疑 DLL 时可以很容易地看到这些:
(来源:alexangas.com)
一旦我结束锁定文件的进程(在本例中为 OWSTIMER.EXE),它就会神奇地正确部署到 GAC。
我很好奇 Windows 在这里实际做了什么。它如何知道文件锁何时被释放?它在哪里保存锁定文件的记录?它会放弃吗?