![]() |
1
15
在为这个问题提供补丁之前,我有以下解决方法。只需使用
|
![]() |
2
3
在.NET framework源代码单步执行功能中有一个已知的文件句柄泄漏错误。通过在Tools+Options+Debugger中关闭该选项可以轻松避免。但是,如果您从未启动调试器,那么这不太可能是您的问题。
|
![]() |
3
2
不幸的是,重命名/移动被锁定的文件对我来说不起作用(句柄打开时只有file\u SHARE\u READ),但起作用的只是在visualstudio进程中杀死那些(可能是泄漏的)句柄。你可以用 KillHandle 自动执行此步骤。 |
![]() |
4
1
|
![]() |
5
1
在我的例子中,我为Visual Studio 2010中的一个扩展提供了一个高度定制的构建,该构建在Visual Studio 2008中没有问题。在构建过程中,一些输出程序集被加载到一个单独的应用程序域中,用于生成文档,然后卸载该域。域名卸载工作正常,通过前后查看app域名列表确认。 Visual Studio 2010似乎对任何加载了基于文件的Assembly.Load*API的程序集都持有文件句柄锁,这些API对文件句柄或路径进行操作。在执行Assembly.Load时,我可以看到文件句柄出现在ProcessExplorer中,并且即使在卸载AppDomain之后,句柄也从未释放。
|
![]() |
6
0
我看到一个答案: (见纳维特萨克塞纳的帖子) 他提到关闭XAML文件(设计图面),这似乎对我很有用。我知道这不是很好,但至少我不必重新启动VS。 |
![]() |
7
0
我来晚了一点,但这个问题是我们升级到VS2015后第一次出现的。VS2010从未发生过! 我们经常使用同时打开的多个VS实例进行开发—这是一个客户机/服务器应用程序,我们同时对两个层进行更改。 升级到VS2015后,VS的两个实例将在obj\Debug中“相互锁定”,一个实例将无法构建公共(“共享”)项目,即我们的DTO、实体框架项目。 我试过预构建脚本,有时也能奏效。对于我们的情况来说,这是不可靠的—有时dll被锁定,甚至无法重命名/移动。 我最终只是对每个解决方案使用不同的解决方案构建配置(从Debug复制)。这就创建了新的特定于解决方案的obj和bin目录,并完全避免了对公共项目对应的dll的争用。
|