无法创建PDB文件。

39

今天在我的项目中出现了一个错误:

Error 1 无法写入输出文件 'C:\MyProject\Release\MyProject.pdb': 未指定的错误。

如果我进入高级编译选项并将其更改为不生成调试信息,我的项目就可以成功编译。

我尝试将发布文件夹的权限设置为对所有人都完全访问,所以我认为这不是权限问题。此外,我没有在日志文件中看到任何能提供更多信息的内容。

有人知道为什么会出现这个错误,或者如何修复它吗?

谢谢。


更新:我已经重启了机器,多次重新启动了 VS,甚至完全删除了存在问题的 OBJ 文件。但还是出现同样的错误。

这是一个简单的单项目解决方案,在上周工作得很好。似乎是 VS 尝试构建 PDB 文件时出现了问题,因为我可以毫无问题地将它们从 Release 和 Debug 文件夹中删除。当我尝试重新构建它们时,VS 将开始创建文件(大小约为 1.4MB),但仍然会出现错误。


程序是否在另一个进程中运行/调试?这通常是第一个罪魁祸首。 - casperOne
16个回答

56
在这个问题上,我在墙上撞了一段时间,并深入源代码控制以尝试回到工作副本。结果发现,PDB文件根本不是问题所在。某人已删除了一个源文件,当我尝试查找该文件以创建调试信息时,VS会出现故障。
因此,如果有人遇到此错误并且无法解决,请确保您没有漏掉任何源文件。
如果VS告诉我文件丢失而不仅仅是告诉我创建PDB文件出现未指定的错误,那将非常有帮助。
谢谢。

我来到这里是为了寻找同样问题的解决方案。我已经将一个“网站”转换为“Web项目”。这会将“App_Code”文件夹更改为“Old_App_Code”。不知何故,VS希望同时在两个文件夹中找到文件。我不知道微软也涉足量子力学。我在“App_Code”中看到了缺失的文件,并显示为黄色警告图标。当我从项目中删除了“App_Code”后,VS在“Old_App_Code”中找到了我的文件,一切都正常运行! - Vivian River
1
谢谢,终于解决了这个问题。浪费了太多时间追逐幽灵! - TheZenker
7
最糟糕的错误信息。可悲的是,这也是我同事问题的解决方案。 - ulty4life
追踪到缺失的复制文件,例如“Copy of ...”,这些文件不在VS解决方案资源管理器中。将文件添加回去后问题得到解决。 - GlennG
如果您正在使用Visual Studio的SVN插件,请查找这些图标以查找缺失的文件。 vbproj或csproj文件引用了这些文件,但是这些文件不在SVN中,您可能已经进行了更新。 进入SVN并责备提交vbproj或csproj文件的人未添加/提交新文件。 :-) http://screencast.com/t/oawcLCyrY3vK .. 要修复,请仅从Visual Studio中删除文件(您只需删除vbproj / csproj文件中的引用),或者添加一些虚拟文件,直到该人将它们提交到SVN。 - Entree
1
应用了这个解决方案后,我终于成功构建了我的解决方案。然后就是找出罪魁祸首是谁... 是的,是我自己!FML - Shai Cohen

35

这里有一个更好的方法来解决这个问题

基本上,关闭你的解决方案并重新打开它,不要编译。检查错误列表,它会显示缺失哪些文件。


3
感谢您的请求。我不明白为什么这不是“勾选”的答案。 - Matt Smith
这似乎是一个时间问题,这就是为什么这不是被接受的解决方案。我很高兴有这个回复,我点赞了,因为它给了我一个快速找出缺失文件的方法。 - vbigham
这是我认为的正确答案。之前的回答不完整。它对我有用,谢谢。点赞。 - Matte

2
这对我很有帮助,其他答案都失败了:
无法写入输出文件[FileName].pdb:未指定错误Visual Studio (参考链接)

1
我曾经遇到同样的错误,最终发现是需要更新一个 Web 引用。更新了所有的 Web 引用后问题仍然存在。最后,我添加了相同的 URL 和名称作为同一 Web 引用,并且添加 Web 引用时告诉我已经有一个同名引用,并提供了一个选项来使用最新信息更新它。这最终解决了问题,项目又可以运行了。

1

检查在 Visual Studio 中显示感叹号图标的缺失文件,这些文件可能不存在于项目源文件夹中。如果您不想要这些文件,请在 Visual Studio 中将其删除,否则请将这些文件添加到源文件夹中。清理或刷新..


1
我希望能够在典型的“关闭并重新打开”之上,加入为什么这样做有帮助的原因。
当构建项目时,Visual Studio 可能会被卡住,以至于它无法找出为什么缺少特定的依赖项,只知道它无法构建该项目。
以下是重建失败后的一个不明确的错误消息:

Unhelpful Error

解决方案如下:

步骤:

  1. 关闭Visual Studio
  2. 打开Visual Studio
  3. 不要编译 - 查看错误列表以获取新的描述性错误:

Helpful Error

很多现有的说明缺少第三步,所以我认为这可能会有所帮助。

1

可能有其他程序打开了该文件,比如编辑器或另一个 Visual Studio 的副本?

尝试关闭并重新启动 VS,甚至重新启动计算机,看看是否解决了问题。


1
在最糟糕的情况下,尝试重新启动Visual Studio。另一个值得尝试的好工具是来自SysInternals的Process Explorer,它允许您查看谁正在占用您的PDB文件。这样,您就可以确切地知道要杀死/重新启动哪个进程以获取对该文件的访问权限。

1
如果您在解决方案中使用了多个项目,那么就有可能出现错误的编译顺序。

0

我在一个 VS2010 的解决方案中遇到了这个问题,尝试了上面所有被接受的答案,但仍然无法弄清楚为什么编译器找不到 (Test.vb) 文件。正如一些答案已经提到的那样,.pdb 文件并不是实际的错误。

错误出现在重新打开未构建的解决方案后出现的错误列表中,即 无法打开模块 'C:\Test\Test.vb'。然而,重新打开解决方案对我没有起作用。错误提示说 'Test.vb' 丢失,尽管 'Test.Vb' 文件在我的本地副本中存在。那么为什么它找不到呢?

我找到的解决方案是:

  1. 关闭解决方案,关闭 VS2010 并在 VS2015 中重新打开解决方案。也可以尝试在 VS2013 中打开,但我没有尝试过。
  2. 我在 VS2015 中构建了解决方案,当然失败了,但这次错误(特别是在输出窗口中,它显示了构建行,包括编译期间发生的错误)显示了编译器试图定位的 'Test.vb' 文件的完整路径。路径为'C:\Test\..\..\Test.vb',这表明,在构建 'Test.vbproj' 项目时,编译器从 'C\Test' 文件夹开始构建,然后附加在 .sln 文件中定义的 '..\..\Test.vb' 位置以读取 'Test.vb' 文件并构建项目。只是它无法导航到 'C:\Test\..\..\Test.vb' 文件夹,其中包含 'Test.vb'

通过在 .sln 文件中更正 'Test.vb' 的位置,它成功构建了。


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