【发布时间】:2022-05-14 18:54:35
【问题描述】:
我有一个基于 MVC/C# 的网站。正在使用的 nuget 包之一是 PDFium 的包装器,它是一个非 .NET dll。 PDFium dll 包含在另一个 nuget 包中,它只是一个复制到输出目录中的 dll。
我遇到的问题是,在我使用该网站后,PDFium dll(即非 .net 的,而不是进行包装的)似乎被加载,然后被 IIS 锁定。如果我尝试在 Visual Studio 中进行构建,我会收到一条错误消息:
无法复制文件 [完整源路径]。该进程无法访问文件 [目标路径],因为它正被另一个进程使用。
构建错误日志中的第二行显示了类似的内容并另外确认:
文件被“IIS Worker Process (28776)”锁定
如果我执行iisreset,那么这将导致该工作进程被杀死,因此可能会发生复制,但我想知道是否有更好的方法来做到这一点。我的想法是,nuget 包和类似包中包含的所有其他 DLL 都可以很好地复制,所以也许有一些更“适当”的方法可以解决这个问题,而不是稍微笨拙的 iisreset 方法......
【问题讨论】:
-
哪个 DLL 被锁定——PDFium.DLL 还是 .NET 包装程序集?
-
@Jazimov:PDFium.DLL 被锁定,而不是 .NET 包装器。我将进行编辑以使其更清晰。
标签: visual-studio iis build-error pdfium locked-files