断点不会被打中。 在Silverlight应用程序中没有为这个文档加载符号

好的,我有:

Visual Studio 2010 RC,W7 x64,启动了一个新的项目types的Silverlight应用程序。 在ASP.NET Web应用程序项目中承载Silverlight应用程序。 Silverlight版本3.0。 添加了一个LinqToSQL类,一个WCF服务,一个Winformtesting器应用程序(解决scheme中的项目)和几个类(也作为解决scheme中的项目)。

昨天,突然间,我得到了“断点不会受到打击。 没有符号已经加载这个文件。 消息出现在IDE中,但它只影响Web应用程序,我可以debuggingSilverlight和Winform应用程序。

我试图摆脱这个信息:

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

所以,这是我生命中的第二次。 上次我通过删除Temporary ASP.NET Files Folder来解决这个问题,但这一次我需要你的帮助。

右键点击解决scheme – >属性

在通用属性 – >启动项目下查找

select多个启动项目

select需要debugging的项目上的“启动”操作。

我有同样的问题,谷歌search后,我发现了两个典型的解决scheme:

  1. 确保.Web项目中的Silverlightdebugging器已被激活。 打开项目属性并在“Web”选项卡下selectSilverlightdebugging器。

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

但这些都没有为我工作 。 然后有人提到了一个线程来尝试使用IE作为浏览器。 这使得debugging和断点再次工作!

编辑:

后来我一直在努力与IE9不工作,因为它附加到错误的过程。 我没有每次手动附加到正确的IE进程,而是find了一个巧妙的技巧 :

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

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

每当我遇到这个特定的错误,事实certificate,Visual Studio正在加载程序集的文件夹与Web应用程序运行的文件夹不同。

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

C:\dev\MyApplication\bin 

但Visual Studio正在从中debugging

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

注意 – 由于各种原因,我使用IIS作为应用程序主机进行debugging,而不是使用大多数人使用的单独的小工具。 这可能会影响我的答案的用处!

更新

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

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

我的问题原来是在Debugconfiguration中打开了Properties-> Build-> Optimize codecheckbox。 把它关掉,重build,debugging工作正常。

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

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

2-您正在debugging同一个应用程序的另一个版本。 例如,您将一个先前构build的应用程序与当前版本的代码进行连接,以进行debugging,而无需重新构build它。

清洗或重build解决scheme为我解决这些问题。

为了确保问题不是你的,请尝试使用VS 2008debugging相同的应用程序(恐怕这可能是VS 2010中的一个错误 – 它仍然是testing版!)。

我有同样的问题,我正在debugging我的项目,我不得不右键单击该项目,并select“新的debugging实例”。 我只需要这样做一次,然后在那之后它照常工作。

这个错误随时都会出现,我总是可以追溯到相关程序集的项目设置。 你不必“等待”,直到你的代码没有考虑到一个断点,或者直到你设置了断点,才知道哪个程序集有符号加载。

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

输出窗口

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

然而,“对我来说”,“每一次”发生这是因为debugging信息没有被创build。 所以我打开(C#)项目中的项目属性>生成>高级。

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

pdboff

而对于Basd.Core.Configuration.dll,即我可以设置和打断点的程序集的设置是:

pdbon

所以我在后一个项目中输出debugging信息,而不是在第一个,因此我的能力击中Basd.Core.Configuration.dll断点

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

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

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

转到项目属性 – >生成 – >高级…

在“输出”部分,在“debugging信息”下拉列表中select“全部”

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

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

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

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

  • 右键单击您的项目,然后select“属性”
  • select左侧的“Silverlight应用程序”选项卡
  • 按下“添加…”button并从对话框中select您的Silverlight项目

这会从您的托pipeWeb应用程序添加对Silverlight应用程序的引用,并确保在构build或部署时将xap文件复制到Web应用程序。 这意味着当前的Silverlight应用程序及其debugging文件位于被debugging的应用程序内部,您将可以逐步完成代码。

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

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

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

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

有同样的问题

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

一旦我将其从GAC中移除,问题就解决了

debugging – > 附加到进程 – >
selectdebugging这些代码types:选项 – >
select托pipev3.5,v3.0,v2.0托pipev4.5,v4.0 在这里输入图像说明

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

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

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

Visual Studio可能仍然引用一个符号文件(在debugging过程中使用的文件)从您的DLL从过期的IIS进程中。 该符号文件已被重新编译的.NET源代码重新创build,但IIS进程仍然引用旧的符号文件。

修理:

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

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

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

在“一个一个时间”下面的链接中执行每个项目符号,但在每个项目中重复执行下面的步骤。

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

1.)在Visual Studio中停止debugging(按红色方块图标)
2.)清洁的解决scheme
3.)构build解决scheme
4.) [在此插入弹球说明]
5.)工具>附加到进程(或从debugging开始)
6.)启动你附加的程序,并运行它,这样你的代码将被击中

6解释说:

如果附加到nunit.exe,然后打开NUnit并运行一个testing,所以你的断点将被击中

如果连接到w3wp.exe(IIS站点),然后在浏览器中打开您的网站,并转到将打到您的断点

编辑:

今天我注意到,如果你尝试debugging一个没有设置为启动项目的项目,它会显示这个。 当您附加到您的w3wp.exe进程时,它认为它被设置为启动项目的项目的debugging。 要解决,只需右键单击Web应用程序项目,然后select“设置为启动项目”。 然后尝试重新附加到您的过程。

情况是这样的:一个特定的项目是你的启动项目(例如有主要方法)。 该项目正在引用解决scheme中的其他项目。 其他项目的断点没有受到打击。

快速解决scheme:当您构build解决scheme时,请查看启动项目的Build输出path(通常是bin \ Debug)。 查看您正在引用的项目的DLL和PDB文件。 确保他们的最后修改date是您上次构build解决scheme的date。 如果不是,则将其从每个项目的Build输出path复制到启动项目Build输出path中。 例如:

项目A有主。 它引用项目B.您的断点不会在项目B中命中。将项目B的生成输出path中的DLL和PDB文件复制到项目A的生成输出path。 然后运行你的解决scheme 现在打破了点。

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

在我的情况下解决同样的问题是以下步骤的组合:

  1. 解决scheme – >属性select多个启动项目,在需要debugging的项目上select启动操作。
  2. 从服务引用中删除服务并清理解决scheme。
  3. 重build服务项目
  4. 将其添加回服务参考
  5. 清理解决scheme并重build它。

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

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

什么帮助我find这个解决scheme,一直在debugging时看着模块窗口,看到我的ASP.NET DLL加载我有: 二进制没有build立debugging信息。

我有同样的问题,但在VS2013 Web应用程序。 对我来说,答案是更新解决scheme的构buildconfiguration:

  1. 右键单击解决scheme并select属性
  2. selectdebuggingconfiguration
  3. select“configuration属性”下的“configuration”
  4. 检查每个要debugging的项目的“生成”框

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

好的,我们去吧:

(在“Silverlight应用程序”中:请首先检查Silverlight是否在服务器项目“属性”中的“web”中进行检查 – 如果没有解决它,请在下面尝试)

第一次做:首先运行:devenv.exe / ResetSettings和1:在顶部菜单点击debugging标签2:点击选项和设置3:在“debugging”和“一般”下find“启用.NET Framework源码步进” 4:勾选框。 5:现在所有的符号将被下载并重新configuration:)

如果再次发生以上情况,只需清除符号所在的文件夹:

1:在顶部菜单中点击debugging标签2:点击选项和设置3:在“debugging”和“符号”下findbutton“空白符号caching”并点击它。

从浏览器中打开Web应用程序的URL,然后在VS.Net IDE中使用工具 – >附件进程

然后附加到aspnet_wp.exe。

debugging器将开始工作

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

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

我有同样的问题 – 在Visual Studio中尝试debugging工作时,很多时间都没有了。

它最终成为Nuget – 我有3个版本的Newtonsoft.Json(跨越7个C#项目)。 该解决scheme将编译,但不可debugging。

我通过在Nuget的包pipe理器控制台中运行以下内容来解决此问题:

PM>更新包Newtonsoft.Json

尝试将Silverlight应用程序项目设置为启动项目:右键单击项目 – >“设置为启动项目”。 然后按F5,看看你是否可以捕捉到断点…

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

另一个可能有用的轶事 –

当我的一个项目使用来自发布输出文件夹的文件引用时,我遇到了这个问题。 当生成结果放在一个Goods文件夹中时,这些发行版的dll覆盖了Debug dll。

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

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

并不是

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

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

不知道为什么,但其中一些是可debugging的,有些不是,即使在程序集的引用设置中,指定了正确的完整path。

这种不可预知的行为让我疯狂:)

我通过从“ References ”文件夹中删除所有包含源代码项目的程序集,并保留了共享程序集版本信息的良好跟踪来解决此问题。

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

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

我有同样的问题。 以下为我工作

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

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