当前不会命中断点。在Silverlight应用程序中没有为该文档加载任何符号

好的,我有:

Visual Studio 2010 RC, W7 x64,启动了一个新的项目类型的Silverlight应用程序。在ASP中托管Silverlight应用程序。NET Web应用程序项目。Silverlight 3.0版。 增加了一个LinqToSQL类,一个WCF服务,一个Winform测试应用程序(解决方案中的项目)和一些类(也作为解决方案中的项目)

昨天,我突然得到了“断点当前不会被击中”。本文档未加载任何符号。'消息出现在IDE中,但它只影响Web Appliaction,我可以调试Silverlight和Winform应用程序。

我尝试/做了什么来摆脱这条信息:

  • 重置Visual Studio设置
  • 删除所有文件在每个\临时ASP。NET文件文件夹(每个32位/64位以及Framework 2.0和4.0都有一个)
  • 尝试使用Visual Studio集成Web服务器调试-通常我使用IIS,在解决方案的项目输出中,我删除了每个项目文件夹中的每个obj和bin文件夹
  • 创建一个新的解决方案,并将所有项目添加到这个新的解决方案中
  • 删除解决方案suo文件
  • 创造了一个新的ASP。NET Web应用程序测试它是否是一个vs安装问题=>我可以调试这个新的项目/解决方案
  • 重启了几次机器
  • 修复了vs.net安装
  • 做了IISReset吗
  • 从IIS中删除Web应用程序
  • 使用Web App项目属性下的创建虚拟目录按钮在IIS中创建一个新的Web App
  • 将每个项目的框架版本从3.5改为4.0
  • 在我的第二台机器上打开解决方案=>相同的行为
  • 爬行微软连接的错误/类似的问题
  • 花了7个小时。

这是我人生中第二次这样了。上次我通过删除临时ASP解决了这个问题。NET文件文件夹,但这次我需要你的帮助。

422678 次浏览

每当我遇到这个特殊的错误时,结果是Visual Studio加载程序集的文件夹与web应用程序运行的文件夹不同。

也就是说,运行应用程序的应用服务器

C:\dev\MyApplication\bin

但是Visual studio正在调试从

C:\dev\MyOtherApplication\bin (or something along those lines, anyway).

注意——由于各种原因,我使用IIS作为应用程序主机进行调试,而不是大多数人使用的小型独立设备。这可能会影响我回答的有用性!

更新:

对于IIS,应用服务器目录(即上面的C:\dev\MyApplication)是为web应用程序配置的物理目录 -这可以通过更改应用程序的基本设置来控制。

对于Visual studio,调试目录(即上面的C:\dev\MyOtherApplication)是svc文件所在的目录,通常与你的csproj项目文件所在的目录相同。

你所面临的原因是PDB(“PDB代表程序数据库,一种专有的文件格式(由微软开发),用于存储程序的调试信息)不是最新的,这可能是由于一些原因:

1-正如Bevan所说,您可能正在调试另一个应用程序!

2-您正在调试同一应用程序的另一个版本。例如,您将以前构建的应用程序与当前版本的代码附加在一起进行调试,而无需(重新)构建它。

清理或重建解决方案为我解决了这些问题。

为了确保问题不是你的,试着在VS 2008上调试相同的应用程序(我担心这可能是VS 2010的一个bug——它仍然是测试版!)

尝试将Silverlight Application Project设置为启动项目:右键单击Project -> '设置为启动项目。然后按F5,看看你是否能捕捉到断点…

每次对silverlight应用程序进行更改时,尝试删除浏览器中的浏览/临时数据

右键单击解决方案——> Properties

查看公共属性—>启动项目

选择多个启动项目

在需要调试的项目上选择“启动操作”。

我也有同样的问题,我正在调试我的项目,我必须右键单击项目并选择“新调试实例”。我只需要这样做一次,然后它就正常工作了。

好了,开始吧:

(在一个“silverlight应用程序”中:请首先检查silverlight是否在你的服务器项目“属性”中的“web”中被选中-如果这没有解决问题,那么尝试下面的这个)

第一次做: 首先运行:devenv.exe /ResetSettings 而且 1: 在顶部菜单中单击调试标签 2: 点击选项和设置 3: 在“调试”和“通用”下找到“启用。net框架源代码步进” 4: 在方框上打勾。 5: 现在所有的符号都将被下载并重新配置:)

如果它再次发生后,上述只是清除文件夹的符号是:

< p > 1: 在顶部菜单中单击调试标签 2: 点击选项和设置 3: 在“调试”和“符号”下找到“空符号缓存”按钮,并单击它

我也遇到了同样的问题,在谷歌了一下之后,我找到了两个典型的解决方案:

  1. 确保在. web项目中激活了Silverlight调试器。打开项目属性,在“Web”选项卡下选择Silverlight调试器。

  2. 重新启动Visual Studio,删除所有bin和obj文件夹。

但这些对我都没用。然后有人在帖子后面提到尝试使用IE作为浏览器。这使得调试和断点再次工作!

编辑:

后来我遇到IE9无法工作的问题,因为它附加了错误的进程。而不是每次手动附加到正确的IE进程,我发现了一个整洁的技巧:

  • 右键单击.Web项目(.html或.aspx)中生成的一个页面
  • 点击“浏览…”
  • 设置IE为默认浏览器(只会影响Visual Studio的浏览器选择)

现在,Visual Studio将在运行. web项目时启动IE并附加到正确的进程。这样就行了。

如果你在Silverlight项目中遇到了问题,解决方案可以相当简单。根据我的经验,在很多情况下调试符号都没有加载由于新的“。xap文件没有部署到临时文件夹(内部VS Cassini或IIS Express)。在这种情况下,完全重建或重置VS设置是没有用的。最简单的解决方法就是删除浏览器中的临时网络文件。如果你正在使用IE进行Silverlight开发和测试,我建议你打开“退出时删除浏览历史记录”选项,这样以后就不会有这样的问题了。

我尝试了很多东西。对我有用的方法。 通过右键单击项目,我将Silverlight应用程序设置为“启动项目”。然后我试着运行它(这显然失败了,因为它依赖RIA服务到一个没有运行的web服务器) 然后我将Web项目重置为启动项目。嘿,瞬间…

另一个可能有用的轶事是

当我的一个项目使用来自发布输出文件夹的文件引用时,我遇到了这个问题。当构建结果被放置在Goods文件夹中时,这些Release dll将覆盖Debug dll。

解决方案是确保在csproj文件中,我的引用的HintPath是

<HintPath>..\..\Core\Goods\$(Configuration)\MyFramework.dll</HintPath>

而不是

<HintPath>..\..\Core\Goods\Release\MyFramework.dll</HintPath>

我也有同样的问题。跟随对我很有用

web application --> Properties --> Silverlight Applications

如果你没有在列表中看到你的Silverlight应用程序,然后点击添加,从“项目”下拉菜单中选择你的Silverlight应用程序,然后添加它。

对我来说,问题是在调试配置中打开了属性->构建->优化代码复选框。关闭它,重新构建,然后正常调试。

我刚刚根据部署Silverlight应用程序解决了这个问题。(这个答案是其他一些答案的重复,但我会尝试更彻底地解释它。)

问题很可能是你的Silverlight应用程序在构建/启动时没有正确部署到你的web应用程序。这是一个参考问题——理解起来很简单,但第一次遇到时并不明显。

就像任何其他项目引用一样,引用项目的输出应该被复制到引用项目的bin文件夹中以便调试。对于类库,当你右键单击并选择“添加引用…”时就会发生这种情况。对于Silverlight,你应该通过Project Properties添加一个引用。

  • 右键单击项目,选择“属性”
  • 选择左边的“Silverlight Applications”选项卡
  • 按“添加…”按钮,然后从对话框中选择你的Silverlight项目

这将从宿主web应用程序中添加一个对Silverlight应用程序的引用,并确保xap文件将在构建或部署时复制到web应用程序中。这意味着当前Silverlight应用程序及其调试文件都在正在调试的应用程序中,您将能够逐级检查代码。

从浏览器中打开Web应用程序url,然后在VS.Net IDE中使用工具>AttachtoProcess

然后附加到aspnet_wp.exe。

调试器将开始工作

我在客户端遇到了这个问题,对于每个应用程序解决方案,他们将大多数共享程序集复制到“参考文献”文件夹,然后将它们作为“解决方案项目”作为解决方案中的“而且”添加到解决方案中。

目前还不确定原因,但其中一些是可调试的,一些是不可调试的,即使在程序集的References设置中指定了正确的完整路径。

这种不可预知的行为几乎把我逼疯了:)

我通过从“参考文献”文件夹中删除所有带有源代码的项目程序集来解决这个问题,并非常好地跟踪共享程序集的版本信息。

这是一个非常有用的帖子,列出了解决这个有害问题的清单。对我来说,有效的方法是切换到IE。我花了一段时间才意识到,因为我已经在使用IE,我已经设置了项目的web属性,以便启动操作是启动扩展程序

C:\Program Files (x86)\Internet Explorer\ iexplorer .exe

使用命令行参数

http://localhost/MyProject (

我需要-private标志来阻止IE缓存我正在处理的swf。从“启动外部程序”切换回“特定页面”修复了“没有符号已加载”的问题。

我在Windows 7上遇到了同样的问题,并尝试了一切:清理dll,调查模块列表,关闭“只是我的代码”,等等。

在我以“管理员”身份运行Visual Studio后,问题得到了解决。诚实。为什么微软不能只是警告我,它是运行“作为管理员”?这会节省我几个小时的工作时间。

在我的案例中,解决同样问题的方法是以下步骤的组合:

  1. 解决方案—>属性选择多个启动项目选择需要调试的项目的启动动作。
  2. 从服务引用中删除服务并清理解决方案。
  3. 重新构建服务项目
  4. 将其添加回服务引用
  5. 清理解决方案并重新构建。

对于那些正在使用Visual Studio 2008而不是Visual Studio 2010的读者,他们会得到这个错误。上面的答案在这种情况下对我没有帮助,所以我分享我的经验。

如果您正在Visual Studio 2008中通过附加到w3wp.exe进程而不是使用ASP. exe进程来调试IIS Web应用程序。NET开发服务器进行调试(从调试开始),这可能是你的问题:

Visual Studio可能仍然从过期的IIS进程中引用dll中的符号文件(调试期间使用的文件)。该符号文件已通过. net源代码重新编译重新创建,但IIS进程仍在引用旧的符号文件。

修复:

只需在Visual Studio中停止调试,重新启动web应用程序,并重新连接到进程。然后断点应该从黄色(当您看到此错误时)再次变为红色。

========================

更多可以尝试的事情(今天发现了新情况):

每次做下面链接中的一个项目,但是每尝试一个项目都重复下面的步骤。

http://carnotaurus.philipcarney.com/post/4130422114/visual-studio-debugging-issue-with-files-of-the-same

< p > 1)。在Visual Studio中停止调试(按红色方块图标)
2)。清洁溶液
. 3)。生成解决方案
4.) [此处插入项目说明]
5)。工具比;附加到进程(或从调试开始)
6)。启动您要附加到的程序,并运行它,这样您的代码将命中

6解释道:

如果连接到NUnit .exe,然后打开NUnit并运行一个测试,这样你的断点就会被击中

如果附加到w3wp.exe (IIS站点),则在浏览器中打开站点并转到将碰到断点的页面

编辑:

今天我注意到,如果你尝试调试一个没有设置为启动项目的项目,它会显示这个。当您附加到w3wp.exe进程时,它会认为它在被设置为启动项目的项目上进行调试。要解决这个问题,只需右键单击web应用程序项目,并选择“设置为启动项目”。然后尝试重新连接到您的进程。

Goto项目属性->构建->高级…

在“Output”部分,在Debug Info下拉菜单中选择“full”

我遇到过这个问题,但在我的情况下,这是因为我试图调试的模块延迟加载。我有一个链接到我的主项目的DLL, DLL是我正在调试的。DLL只在主应用程序中的某些函数被调用时才被调用,因此VS2010在这些函数被调用之前不会加载模块。

当我启动项目时,我收到了这条消息,但当我执行函数时,调试器已经加载了模块和相关的调试信息。

这个线程帮助了我很多:http://geekswithblogs.net/dbutscher/archive/2007/06/26/113472.aspx

我尝试重命名obj\debug文件夹中的.pdb文件,并做了一个干净的解决方案和重建。
它创建了一个新的.pdb文件,我能够正确地命中断点。

也有同样的问题

由于某种原因,其中一个dll在GAC中注册,因此它的版本总是与代码不同。

一旦我把它从GAC中移除,问题就解决了

我必须手动从注册表中卸载所有。dll实例,并从本地驱动器中卸载所有。dll实例。卸载/重新安装我的应用程序,现在im击中断点!这样做浪费了半天时间:(。

我通过附加到IIS进行调试。我抓住了生产网。配置一些新的设置,忘记更新网页。配置以启用调试。

确保元素的调试设置为true。换句话说:

<compilation defaultLanguage="c#" debug="true" targetFramework="4.0">
这个答案不是特别与Silverlight相关的,而是一般的错误:断点目前不会被击中。本文档未加载任何符号。 新手错误是在配置管理器中项目没有设置为调试。值得一试

如果调试被应用程序禁用,这是一个常见的问题,如果你在web.config上有多个转换,经常会遇到这个问题。解决这个问题的一种方法是去构建>配置管理器,并确保调试配置设置为启动…从一个转换测试到另一个转换是很常见的,因此,失去了在特定点中断的能力。

我有一个类似的问题,除了我的问题是愚蠢的-我有2个内置的web服务器运行在2个不同的端口和我的项目->属性-> web ->“启动URL”指向一个固定的端口,但web应用程序实际上并没有在该端口下运行。所以我的浏览器被重定向到“开始URL”,它指向1539,但代码/调试实例在端口50803下运行。

我将内置web服务器更改为在固定端口下运行,并调整了我的“起始URL”以使用该端口。 项目->属性-> web ->“服务器”部分->“使用Visual Studio开发服务器”->特定端口

如果你正在调试一个web项目,确保debug="true"属性已经在你的web中设置。配置文件:

<system.web>
<compilation debug="true"   .../>

这个错误偶尔会出现,我总是可以将其追溯到相关程序集的项目设置。你不必“等待”,直到你的代码不能遵守断点或直到你设置了断点,才能知道哪些程序集加载了符号。

当您在调试模式下运行项目时,它将在输出窗口中列出哪些程序集具有如下加载的符号(您可能需要在新选项卡中打开图像)

输出窗口

所以在这种情况下,BASD.Core.Data.dll没有加载符号。因此,您可以将此程序集的项目设置与设法加载符号的另一个程序集的项目设置进行比较,以便弄清楚为什么有些程序集可以加载符号,有些程序集不能加载符号。

然而,“对我来说”,“每次”发生这种情况,都是因为没有创建调试信息。所以我在一个(c#)项目中打开项目属性>构建>高级。

所以对于上面的Basd.Core.Data.dll,即没有符号,高级构建设置是:

pdboff

而对于Basd.Core.Configuration.dll,即我可以设置并命中断点的程序集,设置如下:

pdbon

所以我在后一个项目中输出调试信息,而不是在第一个项目中,因此我能够在Basd.Core.Configuration.dll中命中断点

还要注意,对于给定的.dll,仅仅在项目的bin文件夹中有一个.pdb文件是不够的,因为它很可能已经过期,因此Visual Studio不能将其作为您试图过路的.dll的有效符号文件。

还要注意,更改构建配置可以更改构建信息设置以及从哪里提取符号。

(我意识到在这种情况下我处于释放模式,但方法仍然适用)

我正在使用VS 2008,我得到了这个错误。我尝试了这里和其他一些网站上建议的所有方法,但都不起作用。

解决方案非常简单,这页上还提到了另外两个解决方案,让我找到了正确的方法。

  1. 转到项目菜单并单击属性(也可以在解决方案资源管理器中右键单击项目名称并选择属性)。

  2. 选择左边的Compile选项卡。

  3. 在“构建输出路径:”文本框中,确保文本框中有“bin\”。

在我的情况下,它指向网络上的另一个bin文件夹,这就是导致断点失败的原因。您希望它查看项目的当前Bin文件夹。

我采取了最简单的路径,实际上在我的多个项目解决方案中,包括一个类库,我有一个问题,由类库项目创建的.dll文件不允许我在执行时有断点,因为它不是由于某种原因构建的,我单独构建该项目并引用它的输出.dll,现在断点是功能性的

不确定,也许这个能帮到你;如果不是你,那就找一个像我这样的新人吧,因为这对我来说很管用:)

场景是这样的:一个特定的项目是你的启动项目(例如有Main方法)。该项目正在引用解决方案中的其他项目。其他项目中的断点没有受到影响。

快速解决方案:当你构建你的解决方案时,在构建输出路径(通常是bin\Debug)中寻找启动项目。查看所引用项目的DLL和PDB文件。确保它们的最后修改日期是您最后构建解决方案的日期。如果不是,则将它们从每个项目的生成输出路径复制到启动项目的生成输出路径。例如:

项目A有Main。它引用项目B。在项目B中没有命中断点。将DLL和PDB文件从项目B的生成输出路径复制到项目A的生成输出路径。然后运行您的解决方案。断点现在将被击中。

现在您需要弄清楚为什么项目A没有复制项目B的DLL和PDB文件。这里的答案涵盖了大多数情况。一个没有涉及的场景是确保您的项目和解决方案正确地绑定到TFS。我有一些项目绑定,有些没有正确绑定。这给我带来了问题。一旦我修复了这个问题,问题就消失了,我不再需要复制DLL和PDB文件。

一种可能的情况是,如果你的ASP项目在应用程序中引用一些代码(而不是一个dll),那么这些符号将不会被加载。

在调试代码时,我不得不暂时将引用的应用程序更改为类库。

我所做的解决这个问题是在我的断点没有击中的页面,我选择了文件夹>添加一个现有的项目,然后从其保存路径选择项目。这允许断点开始工作。

如果没有命中断点,则删除.xap文件。在志愿者项目。删除“YourProject.xap”。我已经尝试了所有以上和偶然发现这个修复,工作的每一次。明智的清理项目后删除以及。

我的问题是代码中间的一个“返回”。所以在返回断点后是无效的。

在Web中修复此问题。我只需要添加debug="true"

  <system.web>
<compilation targetFramework="4.0" debug="true">

什么帮助我找到这个解决方案一直在寻找模块窗口调试时,看到我的ASP。我有:二进制文件不是用调试信息构建的。 . NET dll加载

请检查托管silverlight xap的Web (Asp.Net)项目的Web属性。 去Web项目托管你的silverlight xap ->属性-> Web ->调试器部分->确保选中了silverlight复选框

enter image description here

确保在DEBUG模式而不是RELEASE模式下运行程序。

我也有同样的问题,但在VS2013的Web应用程序。对我来说,答案是更新构建配置的解决方案:-

  1. 右键单击解决方案并选择属性
  2. 选择Debug配置
  3. 选择trivet中“Configuration Properties”下的“Configuration”
  4. 为每个要调试的项目选中“Build”框

一旦我这样做了,所有的断点都开始工作了。

无论如何要把这个标记下来,因为它不是一个答案,但是这个断点没有被击中的问题,对我来说,已经自行修复了。在删除临时文件、重新启动、重新安装、调试设置等几个小时后,它突然开始工作了。当我们毫无理由地碰到一个断点时,我正处于疯狂的边缘。爱不一致的虫子,我。

调试 -> 附加到进程 ->
选择调试这些代码类型:选项->
选择托管v3.5、v3.0、v2.0托管v4.5、v4.0 enter image description here < / p >

我也遇到了同样的问题——在Visual Studio中调试工作花费了大量的时间。

最后是Nuget——我有三个版本的Newtonsoft。Json(横跨7个c#项目)。解决方案可以编译,但不可调试。

我通过在Nuget的包管理器控制台运行以下命令来解决这个问题:

PM>更新包Newtonsoft。Json

如果没有调试最新的可执行文件,在远程调试时也会出现此错误。当您在远程调试时,不要忘记在本地开发机器上构建(重新)后将新代码移到远程机器上!

有时右键单击断点->位置->检查允许源代码与原始版本不同,对我有用。

enter image description here

< p >[编辑]: 有时重建整个解决方案也可以工作

这是我如何修复我的问题,克隆到不同的存储库,Visual Studio 2015:

在Visual Studio中:

  1. 点击工具- >选项
  2. 在左窗格中,单击调试->符号
  3. 点击“空符号缓存”

对我来说,问题是我在项目设置的Build选项卡中启用了“优化代码”。

对于我的WPF应用程序,我删除了应用程序文件夹,再次从源代码控制中“获取最新”,并重新构建。现在所有的断点都工作得很好。

禁用“Just My code”;选项在调试/常规设置。