Visual Studio 2017 锁定文件

7

Visual Studio 版本 15.2 (26430.6) 已发布。

最近我升级到了上述版本,但在编译时不断遇到 VS 锁定文件的问题。

无法将 "obj\Debug\projHype.dll" 复制到 "bin\Debug\projHype.dll"。重试次数已超过 10 次,失败。

我还尝试以管理员身份和普通用户身份运行 VS2017,但问题仍然存在。

我尝试了一些针对较旧版本 Visual Studio 的建议,但都没有效果。你有什么好的解决方法吗?


这意味着仍在运行使用该文件的进程。可能是挂起的构建步骤,或者未正确终止的测试运行器。您可以使用“Process Explorer”查找使用此文件句柄的进程。我以前在各种VS版本和测试运行器中遇到过这个问题。 - Panagiotis Kanavos
如果您在IIS下调试网站并突然终止调试,则此问题也可能出现。 DLL仍在站点的应用程序池(实际上是应用程序域)中加载,并且在您回收apppool或IIS之前不会被释放。 - Panagiotis Kanavos
你正在开发什么样的项目?你是否使用Resharper、单元测试运行器、构建工具、分析器或其他可能使用你的dll的工具?还有一个外部应用程序或测试项目是否仍在运行中? - Panagiotis Kanavos
我看到了同样的事情。使用进程资源管理器,锁定文件的是 DevEnv.exe 而不是它的子进程之一。它会成功构建几次,然后开始失败。 - Rob Prouse
1
我遇到了完全相同的问题。VS进程锁定了文件,唯一的解决方法是重启VS,然后手动删除。非常烦人! - Co-der
3个回答

2

对于遇到此问题的任何人。升级到版本26430.12将解决此问题。看起来先前的版本包含了一个错误。


遇到了相同的问题,但它是特定于 bin/Roslyn 文件夹的。我正在运行 VS2017 版本 26430.13。 - John S
1
截至今天,在VisualStudio 2019预览版中仍然看到这种行为,所以也许更新并不能解决它。 - P. Roe

0

虽然可能存在其他原因,但testhost.exe和testhost.x86.exe都可能导致锁定,从而阻止构建完成。症状令人困惑--测试浏览器会无限地循环,有时构建中会出现超时警告。有时即使关闭了VS,文件也无法访问。

如果您使用nUnit或另一个测试框架,请确保测试发现不会在您的代码中遇到任何无限循环或崩溃。如果发生这种情况,它会挂起testhost可执行文件。例如,如果您使用nUnit TestCase或TestCaseSource,如果其中任何一个执行可能会挂起、锁定或崩溃的操作,那么它们将在执行测试之前被调用。

这是棘手的部分--你的测试还没有运行,但你的代码却可以锁定VS!虽然这可能不是您的问题,但如果您以任何方式进行单元测试发现,请检查是否全部完成。

确保所有发现都完成的一种方法是使用测试本身的功能,并将其禁用为TestCase或TestCaseSource(或其他测试框架中的等效项)。如果测试挂起或崩溃,那就是罪魁祸首。


0

对我来说,重新运行程序并接受“运行上次成功的构建”有所帮助。运行后,锁定就消失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接