[c#] 断点不会被打中。 在Silverlight应用程序中没有为该文档加载符号



Answers

我遇到了同样的问题,并在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并附加到正确的进程。 这应该做到这一点。

Question

好的,我有:

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文件夹来解决它,但这次我需要你的帮助。




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

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

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

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

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




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

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



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

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




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




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

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




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




另一个可能有用的轶事 -

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

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

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

并不是

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




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

然后附加到aspnet_wp.exe。

调试器将开始工作




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




有同样的问题

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

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




对于那些正在使用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应用程序项目,然后选择“设置为启动项目”。 然后尝试重新附加到您的过程。




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

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

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




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




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

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






Links