在VS2017RC中构建.netcore项目时,访问被拒绝.pdb文件的错误

时间:2017-02-27 14:49:00

标签: c# visual-studio msbuild .net-core visual-studio-2017

环境:

Microsoft Visual Studio Professional 2017 RC

版本15.0.26206.0 D15REL

Microsoft .NET Framework

版本4.6.01586

错误:

错误CS2012:无法打开[file.pdb]进行写入 - '访问路径[pdb文件的路径]被拒绝'。

说明

我正在为.net核心1.1构建一个.netcore应用程序,其他库目标是.netstandard1.6。当我构建项目时,我遇到了错误。当它处于这种状态时,我无法清理/构建或运行项目。在项目第一次打开时不会发生,它似乎非常随机,因为在我收到错误之前它可能会工作几次。

当我通过资源管理器导航到它时,我也无法删除.pdb文件,也无法删除调试目录中的netcore1.0或netstandard1.6文件夹的父文件夹。我甚至无法更改文件或文件夹的权限。我是个人电脑的管理员。

当我关闭Visual Studio并再次打开它时,一切都很好,我可以再次构建,这不是答案。

Link to my question on the Visual Studio forum

由于

6 个答案:

答案 0 :(得分:2)

当Visual Studio执行构建操作时,此问题与Visual Studio无法编写[file.pdb]文件有关。由于此问题,Visual Studio无法完成构建过程,因此它将保持此文件锁定。因此,您无法清除/构建或运行项目,也无法在处于此状态时删除.pdb文件或父文件夹。

很难弄清楚Visual Studio的根目录无法打开[file.pdb]进行编写。因为这个问题是随机发生的,我们无法复制。但您可以尝试关闭Visual Studio,然后删除[file.pdb]文件并重建项目

请注意:感谢Jean Roux的贡献,他使用Process Explorer找出了名为ServiceHub.DataWarehouseHost.exe的进程,该进程具有该文件的句柄。杀死那个句柄,然后构建再次工作。

答案 1 :(得分:2)

这是另一个不是一个好解决方案的解决方案:

工具 - >选项 - >调试 - >常规,取消选中“调试时启用诊断工具”

很难知道它是否会再次发生,但我现在连续调试/重建了大约10次,这比以前多了9倍。为了获得可靠的调试/构建周期,必须关闭一个有用的功能仍然是一个非常悲惨的事态。

答案 2 :(得分:2)

引用Aaron Robinson先生在Visual Studio开发人员社区页面here(写于2017年3月11日),这似乎是一个众所周知的问题:

  

这是VS 2017在针对.NET内核项目进行CPU分析时(在调试或分析(Alt + F2)期间)的已知问题。这将在即将发布的版本中解决。解决方法是:

     

A)不为.Net Core项目启用CPU分析(在F5或Alt + F2期间)

     

B)将项目属性中的PDB格式从Portable PDB更改为PDB Full

     

请注意,这只会影响可以输出Portable PDB格式的项目。

     

亚伦

我自己尝试了B,并且首先在我的测试项目中将PDB格式更改为完全,并且在VS 2017找不到我的测试时出现错误,然后更改了我正在测试的项目的PDB格式解决了这个问题。没有测试过A。

要更改PDB格式,请转到项目的属性,转到构建标签,然后点击右下角的高级按钮角。在那里,您可以使用完整选项获得下拉菜单。 (在输出 - >调试信息标题下)

答案 3 :(得分:0)

使用15.2更新修复,按照通知区域,您将找到所有可用的更新。

https://developercommunity.visualstudio.com/content/problem/25390/warning-msb3026-could-not-copy-objdebugnetcoreapp1.html

答案 4 :(得分:0)

我一直在处理这个问题一段时间,对我来说,原因是打开了多个VS2017实例并使用不同的解决方案,并且其中一个或多个正在运行。

我的解决方法是在尝试构建具有此问题的解决方案时,根本不让任何VS实例在调试中运行。

我认为另一个实例在运行时由于某种原因而被锁定。

答案 5 :(得分:0)

如果在关闭VS后甚至无法手动删除.pdb文件,请检查您是否没有VS的其他实例调试引用您要构建的解决方案的解决方案(不一定直接,它会可能像我的情况一样通过NuGet包)。

VS可以“自动”寻找.pdb文件,以便您可以调试其他解决方案中的问题,这很好,但这似乎是一个令人不快的副作用。