Chr*_*utt 329 c# asp.net iis debugging wcf
好的,我有:
Visual Studio 2010 RC,W7 x64,启动了一个新的项目类型的Silverlight应用程序.在ASP.NET Web应用程序项目中托管Silverlight应用程序.Silverlight版本3.0.添加了LinqToSQL类,WCF服务,Winform Tester应用程序(解决方案中的项目)和一些类(也作为解决方案中的项目).
昨天,我突然得到了'断点不会被击中.此文档未加载任何符号.消息出现在IDE中,但它只影响Web Appliaction,我可以调试Silverlight和Winform App.
我尝试/做了什么来消除这个消息:
所以,这发生在我生命中的第二次.上次我通过删除临时ASP.NET文件夹解决了它,但这次我需要你的帮助.
小智 176
右键单击解决方案 - >属性
查看Common Properties - > Startup Project
选择多个启动项目
选择需要调试的项目的"开始"操作.
ang*_*sen 78
我有同样的问题,谷歌搜索后我找到了两个典型的解决方案:
确保在.Web项目中激活Silverlight调试器.打开项目属性,然后在"Web"选项卡下选择Silverlight调试器.
重新启动Visual Studio并删除所有bin和obj文件夹.
但这些都不适合我.然后有人提到了一个线程尝试使用IE作为浏览器.这使得调试和断点再次起作用!
编辑:
后来我一直在努力与IE9无法正常工作,因为它附加到错误的进程.我没有每次手动附加到正确的IE进程,而是找到了一个巧妙的技巧:
现在,Visual Studio将在运行.Web项目时启动IE并附加到正确的进程.应该这样做.
Bev*_*van 54
每当我遇到这个特殊错误时,就会发现Visual Studio正在加载程序集的文件夹与运行Web应用程序的文件夹不同.
也就是说,应用程序服务器正在运行应用程序
C:\dev\MyApplication\bin
Run Code Online (Sandbox Code Playgroud)
但Visual Studio正在调试
C:\dev\MyOtherApplication\bin (or something along those lines, anyway).
Run Code Online (Sandbox Code Playgroud)
注意 - 由于各种原因,我使用IIS作为应用程序主机进行调试,而不是大多数人使用的极小的独立Gizmo.这可能会影响我的答案的有用性!
更新:
对于IIS,应用程序服务器目录(即C:\dev\MyApplication上面)是为Web应用程序配置的物理目录 - 可以通过更改应用程序的基本设置来控制.
对于Visual Studio,调试目录(即C:\dev\MyOtherApplication上面)是svc找到文件的目录,通常是与csproj项目文件相同的目录.
Sam*_*ack 46
我的问题原来是在Debug配置中打开了Properties-> Build-> Optimize code复选框.关闭,重建和调试工作正常.
Sam*_*bes 21
您面临的原因是PDB("PDB代表程序数据库,一种专有文件格式(由Microsoft开发)用于存储有关程序的调试信息)不是最新的,这可能是由于某些原因:
1-正如Bevan所说,您可能正在调试另一个应用程序!
2-您正在调试同一应用程序的另一个版本.例如,您使用当前版本的代码附加了以前构建的应用程序,以便进行调试而无需(重新)构建它.
清洁或重建解决方案为我解决了这些问题.
为了确保问题不是你的问题,尝试使用VS 2008调试相同的应用程序(恐怕它可能是VS 2010中的一个错误 - 它仍然是测试版!).
ris*_*ism 18
这个错误偶尔会出现在我身上,我总是可以追溯到相关组件的项目设置.您不必"等待",直到您的代码无法遵守断点或直到您设置断点,才能知道哪些程序集已加载符号.
在调试模式下运行项目时,它将在"输出"窗口中列出哪些程序集的符号加载如下(您可能需要在新选项卡中打开图像):T

所以在这种情况下,BASD.Core.Data.dll没有加载符号.因此,您可以将此程序集的项目设置与管理加载符号的另一个程序集的项目设置进行比较,以便找出为什么有些做,有些不加载符号.
"对我而言","每次"发生这种情况都是因为没有创建调试信息.所以我在(C#)项目中打开Project Properties> Build> Advanced.
因此对于上面的Basd.Core.Data.dll,即没有符号,高级构建设置是:

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

所以我在后一个项目中输出调试信息而不是第一个,因此我能够在Basd.Core.Configuration.dll中找到断点.
另请注意,仅在给定.dll的项目的bin文件夹中包含.pdb文件是不够的,因为它可能已过期,因此不会被Visual Studio作为.dll的有效符号文件选取.你正试图通过.
另请注意,更改构建配置可以更改构建信息设置以及从哪里获取符号.
(我知道在这种情况下我处于发布模式但该方法仍然适用)
And*_*ski 10
Debug - > Attach to process - >
选择Debug这些代码类型:选项 - >
选择Managed v3.5,v3.0,v2.0或Managed v4.5,v4.0

我刚刚根据部署Silverlight应用程序解决了这个问题.(这个答案与其他一些答案重复,但我会尝试更彻底地解释它.)
问题很可能是您的Silverlight应用程序未在构建/启动时正确部署到Web应用程序.这是一个引用问题 - 它很容易理解,但在第一次遇到它时并不明显.
就像任何其他项目引用一样,引用项目的输出应该复制到引用项目的bin文件夹以进行调试.对于类库,当您右键单击并选择"添加引用..."时会发生这种情况.对于Silverlight,您应该通过"项目属性"添加引用.
这会从您的托管Web应用程序添加对Silverlight应用程序的引用,并确保xap在构建或部署时将该文件复制到Web应用程序.这意味着当前的Silverlight应用程序及其调试文件位于正在调试的应用程序中,您将能够单步执行代码.
小智 9
如果您正在调试Web项目,请确保已在web.config文件中设置了debug ="true"属性:
<system.web>
<compilation debug="true" .../>
Run Code Online (Sandbox Code Playgroud)
小智 8
我在Windows 7上遇到了同样的问题并尝试了一切:清理了DLL,调查了模块列表,关闭了"Just My Code",等等.
我以"管理员"身份运行Visual Studio后问题得以解决.老实说.为什么微软不能只是警告我它没有 "以管理员身份"运行?这将节省我几个小时的工作.
对于那些使用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应用程序,然后重新连接到该过程.然后断点应该从黄色(当您看到此错误时)再次变为红色.
========================
更多的事情要尝试(今天发现新的情况):
在"一次一个"下面的链接中执行每个项目符号,但是在您尝试的每个项目中重复我的步骤.
1.)在Visual Studio
2中停止调试(按红色方块图标).)清洁解决方案
3.)构建解决方案
4.)[INSERT BULLET INSTRUCTION]
5.)工具>附加到进程(或从调试开始)
6.)启动您要附加的程序,并运行它以使您的代码受到攻击
如果附加到nunit.exe,则打开NUnit并运行测试,以便命中断点
如果附加到w3wp.exe(IIS站点),则在浏览器中打开您的站点并转到将触及断点的页面
今天我注意到,如果您尝试调试未设置为启动项目的项目,它将显示此信息.当您附加到您的w3wp.exe进程时,它会认为它在设置为启动项目的项目上进行调试.要解决此问题,只需右键单击Web应用程序项目,然后选择"设置为启动项目".然后尝试重新附加到您的流程.
场景是这样的:一个特定的项目是你的启动项目(例如,有Main方法).该项目正在引用解决方案中的其他项目.其他项目中的断点没有受到影响.
快速解决方案:在构建解决方案时,查看启动项目的Build输出路径(通常是bin\Debug).查看您引用的项目的DLL和PDB文件.确保其上次修改日期是您上次构建解决方案的日期.如果不是,则将它们从每个项目的Build输出路径复制到启动项目Build输出路径中.例如:
项目A有主要.它引用了项目B.您的断点未在项目B中被命中.将DLL和PDB文件从项目B的构建输出路径复制到项目A的构建输出路径.然后运行您的解决方案 破裂点现在将被击中.
现在你需要弄清楚为什么Project A没有复制Project B的DLL和PDB文件.这里的答案涵盖了大多数情景.未涉及的一个方案是确保您的项目和解决方案正确绑定到TFS.我有一些绑定的项目和一些没有正确绑定的项目.这给我带来了问题.一旦我解决了这个问题,问题就消失了,我不再需要复制DLL和PDB文件了.
要解决 Web.config 中的这个问题,我只需添加debug="true"
<system.web>
<compilation targetFramework="4.0" debug="true">
Run Code Online (Sandbox Code Playgroud)
帮助我找到这个解决方案的是在调试时查看模块窗口,并发现对于我加载的 ASP.NET DLL,我有:二进制文件不是使用调试信息构建的。
| 归档时间: |
|
| 查看次数: |
406557 次 |
| 最近记录: |