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

时间:2010-02-20 05:43:00

标签: c# asp.net wcf debugging iis

好的,我有:

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

昨天,我突然得到'断点不会被击中。此文档未加载任何符号。消息出现在IDE中,但它只影响Web Appliaction,我可以调试Silverlight和Winform App。

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

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

所以,这发生在我生命中的第二次。上次我通过删除临时ASP.NET文件夹解决了它,但这次我需要你的帮助。

49 个答案:

答案 0 :(得分:176)

右键点击解决方案 - >特性

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

选择多个启动项目

选择需要调试的项目的“开始”操作。

答案 1 :(得分:78)

我遇到了同样的问题,谷歌搜索后发现了两个典型的解决方案:

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

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

  3. 但这些都不适合我。然后有人提到了一个线程尝试使用IE作为浏览器。这使调试和断点再次起作用!

    编辑:

    后来我一直在努力与IE9无法正常工作,因为它附着在错误的进程中。我没有每次手动附加到正确的IE流程,而是找到了一个整洁的trick

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

    现在,Visual Studio将在运行.Web项目时启动IE并附加到正确的进程。应该这样做。

答案 2 :(得分:54)

每当我遇到这个特殊错误时,就会发现Visual Studio正在加载程序集的文件夹与运行Web应用程序的文件夹不同。

即,应用程序服务器正在从

运行应用程序
C:\dev\MyApplication\bin 

但Visual Studio正在调试

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

注意 - 由于各种原因,我使用IIS作为应用程序主机进行调试,而不是大多数人使用的极小的独立Gizmo。这可能会影响我答案的用处!

<强>更新

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

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

答案 3 :(得分:46)

我遇到的问题是,在Debug配置中打开了Properties-&gt; Build-&gt; Optimize code复选框。关闭,重建和调试工作正常。

答案 4 :(得分:21)

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

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

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

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

为了确保问题不是你的问题,请尝试使用VS 2008调试相同的应用程序(我担心它可能是VS 2010中的一个错误 - 它仍然是测试版!)。

答案 5 :(得分:20)

我遇到了同样的问题,我正在调试我的项目,我不得不右键单击该项目并选择“新的调试实例”。我只需要做一次,然后就可以正常工作了。

答案 6 :(得分:18)

这个错误时不时地出现给我,我总是可以追溯到相关组件的项目设置。您不必“等待”,直到您的代码无法遵守断点或直到您设置断点,才能知道哪些程序集已加载符号。

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

Output window

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

“对我而言”,“每次”发生这种情况都是因为没有创建调试信息。所以我打开Project Properties&gt;构建&gt; (C#)项目中的高级。

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

pdboff

对于Basd.Core.Configuration.dll,即我可以设置并点击断点的程序集,设置为:

pdbon

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

另请注意,仅在项目的bin文件夹中为给定的.dll提供.pdb文件是不够的,因为它可能已过期,因此Visual Studio不会将其作为有效的符号文件你试图介入的.dll。

另请注意,更改构建配置可以更改构建信息设置以及从哪里获取符号。

(我知道在这种情况下我处于发布模式但该方法仍适用)

答案 7 :(得分:14)

转到项目属性 - &gt;构建 - &gt;高级...

在“输出”部分中,在“调试信息”下拉列表中选择“完整”

答案 8 :(得分:12)

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

答案 9 :(得分:9)

如果您正在调试Web项目,请确保在您的web.config文件中设置了debug =“true”属性:

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

答案 10 :(得分:9)

我刚刚根据Deploying Silverlight Applications解决了这个问题。 (这个答案与其他一些答案重复,但我会尝试更彻底地解释它。)

问题很可能是您的Silverlight应用程序未在构建/启动时正确部署到Web应用程序。这是一个引用问题 - 它很容易理解,但在第一次遇到它时并不明显。

与任何其他项目引用一样,引用的项目的输出应该复制到引用项目的bin文件夹以进行调试。对于类库,当您右键单击并选择“添加引用...”时会发生这种情况。对于Silverlight,您应该通过“项目属性”添加引用。

  • 右键单击您的项目,然后选择“属性”
  • 选择左侧的“Silverlight应用程序”标签
  • 按“添加...”按钮,然后从对话框中选择您的Silverlight项目

这会从您的托管Web应用程序添加对Silverlight应用程序的引用,并确保xap文件将在构建或部署时复制到Web应用程序。这意味着当前的Silverlight应用程序及其调试文件位于正在调试的应用程序中,您将能够逐步执行代码。

答案 11 :(得分:8)

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

答案 12 :(得分:8)

我在Windows 7上遇到了同样的问题并尝试了一切:清理了DLL,调查了模块列表,关闭了“Just My Code”,等等。

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

答案 13 :(得分:7)

有同样的问题

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

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

答案 14 :(得分:7)

调试 - &gt; 附加到流程 - &gt;
选择调试这些代码类型:选项 - &gt;
选择托管v3.5,v3.0,v2.0 托管v4.5,v4.0 enter image description here

答案 15 :(得分:6)

对于那些使用Visual Studio 2008的读取,而不是Visual Studio 2010并且正在收到此错误。在这种情况下,上面的答案对我没有帮助,所以我分享了我的经验。

如果您通过附加到w3wp.exe进程而不是使用ASP.NET Development Server进行调试(从调试开始)来调试Visual Studio 2008中的IIS Web应用程序,则可能是您的问题:

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

要修复:

在Visual Studio中停止调试,重新启动Web应用程序,然后重新连接到该进程。然后断点应该从黄色(当你看到这个错误时)变成红色。

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

要尝试的更多内容(今天发现新情况):

在“一次”下面的链接中执行每个项目符号,但是在您尝试的每个项目中重复我的步骤。

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

1。)在Visual Studio中停止调试(按红色方块图标) 2.)清洁溶液
3.)构建解决方案
4.) [INSERT BULLET INSTRUCTION]
5.)工具&gt;附加到过程(或从调试开始)
6.)启动您要附加的程序,并运行它以使您的代码受到影响

6解释说:

如果附加到nunit.exe,则打开NUnit并运行测试以便命中断点

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

编辑:

今天我注意到,如果您尝试调试未设置为启动项目的项目,它将显示此信息。当您附加到您的w3wp.exe进程时,它会认为它在设置为启动项目的项目上进行调试。要解决此问题,只需右键单击Web应用程序项目,然后选择“设置为启动项目”。然后尝试重新附加到您的流程。

答案 16 :(得分:5)

方案是:特定项目是您的启动项目(例如,具有Main方法)。该项目正在引用解决方案中的其他项目。其他项目中的断点没有被击中。

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

项目A有主要。它引用了项目B.您的断点未在项目B中被命中。将DLL和PDB文件从项目B的构建输出路径复制到项目A的构建输出路径。然后运行您的解决方案破裂点现在将被击中。

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

答案 17 :(得分:4)

要在Web.config中解决此问题,我只需添加debug="true"

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

帮助我找到这个解决方案的原因是在调试时一直在查看模块窗口,并看到我加载的ASP.NET DLL: Binary没有使用调试信息构建。

答案 18 :(得分:4)

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

  1. 解决方案 - &gt;属性选择多个启动项目,选择需要调试的项目的“启动操作”。
  2. 从服务参考中删除了服务并清理解决方案。
  3. 重建服务项目
  4. 将其添加回服务参考
  5. 清理解决方案并重建。

答案 19 :(得分:3)

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

  1. 右键单击解决方案,然后选择“属性”
  2. 选择调试配置
  3. 选择&#34;配置&#34;在&#34;配置属性&#34;在三脚架
  4. 检查&#34; Build&#34;要调试的每个项目的框
  5. 一旦我这样做,我的所有断点都开始工作了。

答案 20 :(得分:2)

对于我的WPF应用程序,我删除了应用程序文件夹,再次从源代码管理中获取“Get Latest”,然后重建。所有断点现在都很好。

答案 21 :(得分:2)

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

答案 22 :(得分:2)

我遇到了同样的问题 - 在Visual Studio中尝试调试时失去了很多时间。

最终成为Nuget - 我有3个版本的Newtonsoft.Json(跨7个C#项目)。该解决方案将编译但不可调试。

我通过在Nuget的程序包管理器控制台中运行以下内容来修复此问题:

PM&GT;更新包Newtonsoft.Json

答案 23 :(得分:2)

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

答案 24 :(得分:2)

好的 - 我们走了:

(在“silverlight应用程序”中:请首先检查您的服务器项目“属性”中的“web”中是否检查了silverlight - 如果没有解决它,请在下面尝试此操作)

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

如果在上述内容之后再次发生,请清除符号所在的文件夹:

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

答案 25 :(得分:2)

从浏览器中打开Web应用程序URL,然后在VS.Net IDE中使用工具 - &gt; AttachtoProcess

然后附加到aspnet_wp.exe。

调试器将开始工作

答案 26 :(得分:1)

我遇到了同样的问题。以下为我工作

转到web application --> Properties --> Silverlight Applications

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

答案 27 :(得分:1)

请检查托管silverlight xap的网络(Asp.Net)项目的网络媒体资源。 转到Web项目托管您的silverlight xap - &gt;属性 - &gt;网络 - &gt;调试器部分 - &gt;确保选中silverlight复选框。

enter image description here

答案 28 :(得分:1)

另一个可能有用的轶事 -

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

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

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

而不是

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

答案 29 :(得分:1)

如果没有点击断点,请删除.xap文件。在YourProject.Web / ClientBin中删除YourProject.xap。我已经尝试了以上所有并偶然发现了这个修复,每次都有效。删除后也明智地清理项目。

答案 30 :(得分:1)

无论如何,请将此标记为非答案,但这个断点问题没有被击中,对我来说,只是修复了自己。几个小时删除临时文件,重新启动,重新安装,调试设置无济于事,它只是突然开始工作。当我毫无理由地遇到一个断点时,我处于精神错乱的边缘。喜欢不一致的错误,我。

答案 31 :(得分:1)

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

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

这种不可预测的行为几乎让我发疯:)

我通过删除“ References ”文件夹中的所有程序集解决了这个问题,该文件夹中包含有源代码的项目,并且非常好地跟踪共享程序集的版本信息。

答案 32 :(得分:1)

我正在使用VS 2008,我收到了这个错误。我尝试了其他一些网站上建议的其他内容,但没有任何效果。

解决方案很简单,本页提到的另外两个解决方案让我处于正确的区域。

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

  2. 选择左侧的“编译”标签。

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

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

答案 33 :(得分:1)

我有一个类似的问题,除了我的问题很愚蠢 - 我有2个内置的Web服务器在2个不同的端口下运行的实例我有我的项目 - &gt;属性 - &gt;网络 - &gt; “起始URL”指向固定端口,但Web应用程序实际上并未在该端口下运行。所以我的浏览器被重定向到“起始URL”,它引用了1539但代码/调试实例在端口50803下运行。

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

答案 34 :(得分:1)

尝试将Silverlight Application Project设置为启动项目:右键单击项目 - &gt; '设置为启动项目。然后按F5查看是否可以捕获断点......

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

答案 35 :(得分:0)

如果您遇到Silverlight项目问题,解决方案可能非常简单。根据我的经验,在许多情况下,由于新的“.xap”文件未部署到临时文件夹(内部VS Cassini或IIS Express),因此未加载调试符号。在这种情况下,完全重建或重置VS设置将无济于事。最简单的解决方案是删除浏览器中的临时Internet文件。如果您使用IE进行Silverlight开发和测试,我建议您启用“退出时删除浏览历史记录”选项,以便将来不会出现此类问题。

答案 36 :(得分:0)

我尝试了很多东西。什么对我有用。 通过右键单击项目,我将Silverlight应用程序设置为“设置为启动项目”。然后我尝试运行它(显然失败了,因为它依赖于RIA服务到一个没有运行的Web服务器) 然后我将Web项目重置为启动项目..并且嘿presto ..它都在工作。

答案 37 :(得分:0)

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

答案 38 :(得分:0)

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

enter image description here

[编辑]: 有时重建整个解决方案也有效。

答案 39 :(得分:0)

我通过附加到IIS进行调试。我为生产web.config抓取了一些新设置,忘了更新web.config以启用调试。

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

<compilation defaultLanguage="c#" debug="true" targetFramework="4.0">

答案 40 :(得分:0)

我为修复此问题所做的是在我的断点没有击中的页面中,我选择了文件夹&gt;添加现有项目,然后从其保存路径中选择项目。这允许断点开始工作。

答案 41 :(得分:0)

一种可能的情况是,如果您的ASP项目引用了应用程序中的某些代码(而不是dll),则不会加载符号。

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

答案 42 :(得分:0)

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

不确定,也许这有助于你;如果不是你那么像我这样的新人因为它对我有用:)

答案 43 :(得分:0)

这是一个非常有用的线程,是为这个有害问题尝试的事项清单。对我来说,有效的是交换到IE浏览器。我花了一段时间才意识到,因为我已经在使用IE浏览器,所以我设置了项目的网络属性,以便开始行动是为了启动ex​​tenal程序

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

使用命令行参数

http://localhost/MyProject -private

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

答案 44 :(得分:0)

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

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

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

答案 45 :(得分:0)

如果应用程序正在禁用调试,这是一个常见问题,并且如果在web.config上有多个转换,通常会遇到这种问题...解决此问题的一种方法是转到Build&gt; Configuration Manager并确保Debug配置设置为启动...从测试一个转换到另一个转换很常见,因此,失去了在特定点断开的能力。

答案 46 :(得分:0)

这个答案与Silverlight没有特别的关系,但是一般错误:断点当前不会被命中。没有为此文档加载任何符号。 noob错误是项目未在配置管理器中设置为调试。值得一试

答案 47 :(得分:-1)

我的问题是&#34;返回&#34;中间的代码。所以返回后,breakepoint不会工作。

答案 48 :(得分:-2)

这是我在克隆到不同存储库后修复问题的方法,用于Visual Studio 2015:

在Visual Studio中:

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