c# 当前不会命中断点还没有为该文件加载任何符号 - 断点不会被打中。 在Silverlight应用程序中没有为该文档加载符号





当前不会命中断点找不到相应的位置 (25)


每当我遇到这个特定的错误时,事实证明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项目文件的目录相同。

好的,我有:

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

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

我试过/做了什么来摆脱这个信息:

  • 重置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以查找错误/类似问题
  • 休息7小时。

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




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

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

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

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

编辑:

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

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

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




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




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

查看Common Properties - > Startup Project

选择多个启动项目

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




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

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



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




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




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




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

  1. 右键单击解决方案并选择属性
  2. 选择调试配置
  3. 在天鹅绒的“配置属性”下选择“配置”
  4. 选中您要调试的每个项目的“Build”框

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




另一个可能有用的轶事 -

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

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

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

并不是

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




对于那些正在使用Visual Studio 2008的阅读者,而不是Visual Studio 2010,并且正在出现此错误。 上述答案在这种情况下无助于我,所以我分享了我的经验。

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

Visual Studio可能仍然是从过时的IIS进程引用一个符号文件(调试过程中使用的文件)。 并且该符号文件已由.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.) [在此插入弹球说明]
5.)工具>附加到进程(或从调试开始)
6.)启动你附加的程序,并运行它,这样你的代码就会被击中

6解释说:

如果附加到nunit.exe,然后打开NUnit并运行一个测试,以便您的断点将被击中

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

编辑:

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




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




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

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




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

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

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

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




调试 - > 附加到进程 - >
选择调试这些代码类型:选项 - >
选择托管v3.5,v3.0,v2.0托管v4.5,v4.0




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

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

什么帮助我找到这个解决方案一直在调试时查看Modules窗口,并看到为我的ASP.NET DLL加载了我: Binary没有用调试信息构建。




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

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

就像任何其他项目引用一样, 引用的项目输出应该被复制到引用项目的bin文件夹中以便调试。 对于类库,这发生在您右键单击并选择“添加引用...”时。 对于Silverlight,您应该通过项目属性添加引用。

  • 右键单击您的项目,然后选择“属性”
  • 选择左侧的“Silverlight应用程序”选项卡
  • 按下'Add ...'按钮并从对话框中选择您的Silverlight项目

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




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

然后附加到aspnet_wp.exe。

调试器将开始工作




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

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

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

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

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




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




对我来说问题原来是在Debug配置中打开了Properties-> Build-> Optimize code复选框。 关闭它,重新建立,调试正常。




好的,我们去吧:

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

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

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

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




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

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

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

PM>更新包Newtonsoft.Json




转到项目属性 - >生成 - >高级...

在“输出”部分,在调试信息下拉菜单中选择“全部”




除非您有特别需要动态编译的项目, 否则请勿使用网站项目

为什么? 因为在尝试更改或理解您的项目时,网站项目会将您推上墙。 Visual Studio中的静态类型查找功能(例如,查找用法,重构)将永远在任何合理大小的项目上使用。 有关更多信息,请参阅Visual Studio中的“查找所有引用”缓慢的堆栈溢出问题。

我真的不明白为什么他们放弃了Visual Studio 2005中的Web应用程序,因为它引发了令人痛苦的,完整的,生产力carb web网站项目类型。





c# asp.net wcf debugging iis