关于C#:我如何解决“断点当前不会被击中。 此文档未加载任何符号。“警告?

How do I remedy the “The breakpoint will not currently be hit. No symbols have been loaded for this document.” warning?

C速成版桌面应用程序。工作了,5秒钟后就没工作了。

我尝试了以下方法。

  • 确保在所有程序集上设置了调试配置、调试标志和完整的调试信息。
  • 从整个计算机中删除所有bin和obj文件夹以及与项目相关的所有dll。
  • 重新创建从头开始导致问题的项目。
  • 重新启动。

我在解决方案中有两个WinForms项目。其中一个加载调试信息,另一个不加载。它们都引用我试图在项目文件中以完全相同的方式获取调试信息的程序集。有什么想法吗?

我想在这里补充一点,主要是在我回来回顾这个问题时,符号在程序集被加载之前不会被加载,程序集在需要之前不会被加载。如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,不会加载符号(并且会将断点显示为未命中)。


开始调试,一旦到达一个断点或使用了Debug > Break All,就使用Debug > Windows > Modules。您将看到加载到进程中的所有程序集的列表。找到要获取其调试信息的。右键单击它并选择"符号加载信息"。您将得到一个对话框,其中列出了它为程序集查找.pdb文件的所有目录。根据实际的.pdb位置验证该列表。确保它找不到旧的。

在普通项目中,程序集及其.pdb文件应该始终由IDE复制到与.exe相同的文件夹中。项目的bindebug文件夹。如果你一直在玩的话,一定要从GAC中删除一个。


首先尝试用鼠标右键单击项目>重建来重建项目。如果不起作用,请尝试清理项目(右键单击项目>清理)

如果不起作用,请检查:

  • 用鼠标右键单击项目
  • 选择[属性]
  • 选择[生成]选项卡
  • 确保选中[定义调试常量]和[定义跟踪常量]
  • 单击构建选项卡页底部的[高级]按钮
  • 确保将[调试信息:]
  • 单击[确定]并重建项目;-)
  • (步骤6生成.pdb文件,这些是调试符号)


    只是一些简单的尝试-你可能已经尝试过了。右键单击解决方案资源管理器中的解决方案,单击"清理解决方案",将删除与解决方案关联的所有已编译和临时文件。

    重新生成解决方案,然后再次尝试调试。

    我在解决方案中的多个项目遇到了断点问题——有些项目编译为x86,有些项目编译为x64。


    禁用调试/常规设置中的"仅我的代码"选项。


    交叉发布我在类似线程上找到的Hans K的此修复程序>>此处<:

    Right click on solution --> Properties

    Look under Common Properties --> Startup Project

    Select multiple startup projects

    select Start action on the projects you need to debug.


    选定的答案使我解决了我的问题。但我需要做更多的事情:

    即使在下拉列表中选择了"调试",也要执行以下操作:

    enter image description here

    在项目属性>构建中:

    enter image description here

    Visual Studio未将符号加载到特定项目。因此,在该下拉列表中,我选择了"配置管理器",并看到我的Web项目的设置不正确:

    enter image description here

    enter image description here

    然后我将其设置为"debug",它开始生成.pdb文件。但我需要手动复制pdb和dll,并将其放入vs正在查找的文件夹中(这里是所选答案帮助我的地方):

    enter image description here


    Debug>Windows>Modules,查看加载了哪些模块,将我推向了正确的方向。

    在我的例子中,IISExpress似乎加载了一个不同于临时ASP.NET文件的dll。

    解决方案?

  • 浏览至C:\Users\\AppData\Local\Temp\Temporary ASP.NET Files\vs
  • 删除此目录中的所有内容!

  • 我可以通过简单地将"附加到进程"中的选项设置为"自动确定要调试的代码类型"来修复错误,如附加的屏幕截图所示。

    只需遵循以下步骤:

    • 从菜单栏转到调试
    • 单击"附加到进程"
    • 在"附加到"选项附近,单击"选择"按钮
    • 将出现"Select code type(选择代码类型)"窗口。
    • 现在,选择自动确定要调试的代码类型的选项,然后单击"确定"按钮。

    Fixed Debugging Error


    检查bin/debug文件夹中是否缺少.pbd文件。如果是,则转到项目的"属性",选择"构建",然后在底部选择"高级"。在出现的新窗口的"调试信息"下选择"完整"。这是我的问题,帮我解决了。

    Showing where to find the setting


    有时,即使它给了你这个错误,breakpoint仍然会被击中,所以忽略这个错误。这种情况经常发生在MVC web appViews中。


    在我的例子中,在我的项目属性中检查了"优化代码"。这导致vs将我的程序集视为"非我的代码",而反过来,它没有为它加载符号。

    解决方案是取消选中此项。Location of Optimize Code checkbox


    只需检查您的解决方案是否处于发布模式。


    尝试在Windows中以管理员身份运行Visual Studio。


    在我的例子中,我尝试在relase模式下调试。一旦我将其更改为调试模式。其工作


    您需要在编译器设置中启用"生成调试信息"


    Microsoft Visual Studio Express 2013版本中不存在"启动调试、调试+Windows+模块"选项。

    取消选中"工具选项""调试"中的"使用托管兼容性模式"可修复此问题。


    我们找到了问题的根源。此代码使用的是.aspx文件的page指令中的"codebehind"属性,而不是"code file"属性(ASP.NET 2.0及更高版本)。经过几天的绝望,一个简单的搜索和替换解决了问题。


    我试过上面提到的所有方法,但都没用。[清洗溶液,检查PDB文件等]

    即使发布相同的解决方案也无法解决问题。

    然后我回到了我通常做的事情来解决(愚弄这个顽固的Visual Studio)

    我所做的就是对代码进行有意的更改并发布解决方案。然后我恢复了更改并再次发布。

    瞧,PDB文件,除掉恶灵。这不是一个明智的解决方案,但这确实有效。- -


    要检查的事情只是为了清楚:确保将配置设置为"debug",而不是"release"。可以在"release"模式下调试启动项目,但不能调试引用的类库。


    这花了我一段时间尝试上面的其他选项,出于某种奇怪的原因,调试停止了工作。

    Tool -> Options -> Debugging -> General -> (untick)"Require source files to exactly match the original version" option


    这些答案都没有解决我的问题。我尝试了另一件事,基于这样一个事实:停止的项目实际上不是加载的项目。当汉斯·帕桑特写下这个.dll文件时,我发现我要停止调试程序,而在.exe文件附近复制的.pdb文件。这些文件的日期比较旧,所以我认为它们在运行时没有更新。我手动删除了它们,Visual Studio创建了另一对,并将此新对放在.exe附近。现在破坏者开始工作了!

    可能Visual Studio无法复制和替换.exe附近的现有文件(.dll和.pdb),因为有其他文件。所以如果我手动删除,那么vs可以在.exe附近创建一个新的。

    我认为另一个更改(检查等,从另一个答案)触发了一些东西,Visual Studio复制并替换了项目文件夹中的dll和pdb到exe附近的文件夹,所以这是一个解决方案。

    我认为问题的根本原因是Visual Studio在运行时使用了另一个文件,而不是项目中的文件,并且停止了。

    也许这个答案可以帮助别人!


    仅限Web应用程序(IIS Express):

    • 右键单击IIS Express托盘并关闭IIS。
    • 清洁溶液

    IIS Tray


    而不是仅仅做这些事情

    关闭并重新打开

    它将解决这个问题的解决方案


    项目属性(然后选择生成配置)>Build选项卡>Advanced…>调试信息(下拉列表)

    设置为"全部"或"仅PDB",然后重新生成


    我也有同样的问题,我在x86(或x64)中重建了整个解决方案(包括引用的项目)。

    尽管我从配置管理器(build->configmanager)将所有项目设置为x86,但我的一些项目没有设置为x86。

    所以只要确保右键单击项目并遵循

    project -> properties -> Debug Tab, verify Configuration and Platform.


    我知道我晚了很多年,但我认为我做了一些错误的事情,并遵循了上述步骤,然后我意识到我错误地将解决方案配置设置为"释放")。


    我当时正在使用VS10将一个C应用程序与一个静态库集成,这是我新接触到的。我编写了一个托管代码dll来连接它们。除了静态库,我可以在任何地方设置断点。我收到上面描述的消息-没有为此文档加载符号。我尝试了上面的许多建议。我可以看到符号没有被加载。我最后注意到一个复选框配置调试,启用非托管代码调试。这允许我在静态lib函数中设置断点。


    我也遇到过类似的问题,我做了以下工作:调试=>选项=>常规=>删除"仅启用我的代码"复选标记这对我有用……


    我仔细阅读了上面所有的答案,但没有一个能解决我的问题。

    在我的例子中,我正在编译一个类库(DLL)。在debug->modules中似乎没有加载任何模块,因此我甚至无法手动加载符号。

    我的解决方案是将此行添加到我的代码中:

    1
    System.Diagnostics.Debugger.Launch();

    到达此代码后,将触发异常,.NET Framework将显示一个对话框,询问您要使用哪个Visual Studio(即,新的vs 2008实例、新的vs 2013实例等)来调试程序。您可以选择已加载项目的现有vs实例。这将把进程附加到vs会话并加载所有符号,现在您可以调试项目了。

    当然,编译必须使用调试配置完成,而不是释放。


    对于ASP.NET应用程序,请检查网站"ASP.NET"选项卡的属性。确保选择了正确的ASP.NET版本。


    右键单击项目->属性->转到构建选项卡->取消选中优化代码。为解决方案中的任何项目执行此操作


    我也有同样的问题,我尽了一切可能…其中一些是

    1)将临时ASP.NET文件夹中的临时文件置于bin和obj文件夹中。

    2)取消选中优化代码并启用我的代码

    3)导航并尝试从模块窗口手动加载符号。

    4)检查解决方案属性中的生成标志。……

    名单还在继续……我花了差不多一天的时间在这上面,但最终对我起作用的是…我知道我的项目的符号没有被加载,我在模块窗口中也看不到任何具有我的项目名称的模块…

    所以问题是我的符号是从项目的虚拟目录路径带来的…它被映射到其他项目的虚拟目录…应该加载到模块中的Web项目不在那里以下是我遵循的步骤。

    • 右键单击特定的Web项目并选择"属性"
    • 转到Web选项卡
    • 您可以看到"创建虚拟目录"按钮
    • 当我单击它时,我看到一条警告消息,说"该(项目名称)已映射到(另一个项目名称)",您确定要重新映射吗?像这样的东西
    • 那么,我为什么在模块窗口中看到不必要的项目名称就很有意义了
    • 然后我重新构建了解决方案,并能够到达断点

    在复制粘贴另一个WebService ASMX文件到现有的WebService之后,发生了这种情况,导致在尝试调试最近添加的服务时出现相同的错误,为了能够调试,我必须在不调试的情况下启动,然后附加到进程。这很奇怪,但这是我发现能够调试的唯一方法。


    如果我们从vsts获取最新的文件,那么所有文件都将处于只读模式。在运行Project时,所有类库类都是只读的,并且brakepoints变为空,并说"当前不会命中断点"。没有为此文档加载符号"。

    解决方案1

    转到项目位置,右键单击文件夹--->属性--->常规选项卡--->取消选中只读(仅适用于文件夹中的文件)---->应用--->确定

    解决方案2

    开始调试,转到调试--->Windows--->模块。选择一个程序集,然后右键单击--->(选择)符号设置。在此目录的缓存符号中设置bin路径,并在PDB位置符号中选择Microsoft服务器。单击"加载所有符号"。这需要时间。然后单击"确定"。

    现在,所有程序集的符号状态已从"找不到或打开PDB"更改为"已加载符号"。


    我尝试了所有这些,但无法使我的断点工作…

    我解决这个问题的方法是

    在没有触及断点的页面中,我选择了文件夹>添加现有项目,然后从其保存路径中选择页面。这允许断点开始工作。


    我通读了所有的答案,没有什么帮助。在我的例子中,web.config文件有问题。是

    我改为

    。现在我可以调试应用程序了。


    如果您发现必须在解决方案中按特定顺序单独构建项目才能获得要构建的解决方案,因为在清理后直接构建解决方案不起作用,然后您发现问题中描述的问题,可能是因为包含了一些引用的其他项目对不正确的相对路径的引用,因为它们已从其他位置添加到解决方案中。因此,相对路径不会与.csproj文件位于直接位于.sln文件下的文件夹中的位置相同。

    它之所以通过按特定顺序逐个构建项目来构建,是因为其他项目引用相同的库,然后构建到GAC。解决方案最终会生成,但它加载的符号来自GAC,这些符号可能会过时。

    解决方案是重新构造解决方案和项目的物理文件夹结构,或者单独打开.csproj文件并修复相对路径,以便对任何给定库的所有引用最终指向所有项目中的相同位置。或者使用$(SolutionDir)令牌。

    如果其他所有方法仍然失败,则需要强制Visual Studio重置生成配置,这要求您取消选中所有生成配置的所有项目,然后重新检查所有项目-请参阅此处的解决方案。


    在vs 2013中尝试调试Excel加载项时,在我通过禁用dotnet框架源代码步进和禁用符号加载尝试了所有调试设置之后,最终对我起作用的是将配置设置更改为"发布"而不是"调试",因为编译器似乎跳过了代码,最终命中了断点。


    确保您的代码在链接时不会被抛出。即使编译器可以重建一个对象,如果链接器没有看到对代码的引用,它也会抛出该对象,并在试图设置断点时导致此错误。


    [Wince]我在构建Wince的过程中遇到了这个问题,似乎"clean"没有清除设备上的目标文件夹,我通过更改设备上的输出文件夹(项目属性"->设备选项卡"-->将输出文件夹更改为以前失败的调试之外的其他文件夹)获得了调试/中断恢复,还有!这是有效的。可能需要对设备进行手动清理,但稍后会进行。

    希望这有帮助。


    在我的例子中,在AssemblyInfo.cs文件中,有下面一行,我对此进行了评论,一切都是正确的:

    1
    [assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

    在没有在任何其他论坛中找到.pdb文件之后,我想再添加一件事,通过不加载.pdb文件来防止单步执行/中断:如果您添加一个构建发布过程来向dll(公司名称、版本号等)添加资源元数据,如"rc.exe my_dll.rc",这可能会导致dll与.pdb文件不匹配。如果签名不匹配,则不会加载文件和调试所需的所有符号。从调试版本中删除此项。


    对我来说,问题只是我试图在一个没有设置为启动项目的Web项目中进行调试。所以在运行debug时编译得不好,.pdb不是最新的。

    只需将项目设置为"作为启动项目进行设置"就行了。

    希望这有帮助


    最后,我使用多个Postharp版本将我的问题追溯到一个明显的不兼容问题。我尝试调试的应用程序有一个以前版本的PostSharp,但引用了一个使用较新版本的项目,出于某种原因,这导致VS拒绝为该应用程序生成PDB文件(所有其他DLL都加载了它们的调试符号)。

    解决方案是将每个项目中的postsharp更新为最新版本并重新编译。


    在我的例子中,这是因为我的发布配置文件(发布到本地IIS站点)以某种方式设置为发布配置,尽管全局生成配置设置为调试。修改了发布配置文件以调试配置,为我解决了问题。


    在我的例子中,我正在使用Visual Studio的实验实例调试WPF扩展。在开始调试,然后暂停Dubugger之后,我打开了Debug > Windows > Modules窗口。从那里,我可以看到Visual Studio试图加载符号C:\Users\\AppData\Local\Microsoft\VisualStudio\15.0_76a9e536Exp\Extensions\的目录。停止调试后,我使用Windows资源管理器删除了目标文件夹,并重新启动了调试器。然后,Visual Studio能够命中断点。


    在我的例子中,这些解决方案都不起作用。我必须去

    Tools -> Import and Export Settings -> Reset all settings.

    然后调试开始工作,没有任何问题。


    我收到了这个消息,但被难住了(使用的是Visual Studio 2013高级版)。

    通常,我们的工作应用程序引用一个特定的common/app目录中的.dlls,如:c:ourcompanyappsxxxx.dll。这种情况发生在一个解决方案中,该解决方案中有许多winform和.dll项目。.dll项目编译为c:ourcompanyapps,winform项目引用该位置中编译的.dll文件。

    问题:我发现有问题的应用程序引用的是源代码管理bindebug位置中的.dll项目,而不是C:ourcompanyapps中编译的.dll文件。

    解决方案:我删除了引用,并从c:ourcompanyappslocation重新添加了它。然后我可以单步执行在.dll代码中添加的断点。

    希望这能帮助别人。


    我个人的情况是调试在Visual Studio 2013中工作,它最初是在Visual Studio 2013中创建的,但在2015年不工作。我可以通过将项目文件中的版本更改为版本12而不是版本10来解决这个问题。


    我在2013年启动ASP.NET网站时就遇到过这种情况。在我的例子中,一旦Web浏览器完全启动,它就会消失。


    尝试调试SharePoint项目中的Silverlight应用程序时出现问题。在项目属性的"SharePoint"选项卡下,必须显式启用Silverlight应用程序的调试。否则就会出现这个错误。


    还值得一提的是,在某些情况下会出现问题,因为您要调试的项目是一个外部服务。在这种情况下,必须将调试器附加到正在运行的进程。


    从Visual Studio 2017 15.3.1到15.3.5,出现了一种解决此问题的新方法。如果使用editorconfig,charset=utf8选项会导致这些症状。vs团队已经复制了这一点,并表示他们正在努力。

    因此,一个解决方法是在.editorconfig文件中注释掉charset=utf8行。

    截至2017年10月9日,状态为"固定-待发布"。

    (多亏了约翰·哈顿,"断点目前不会被击中。源代码与原始版本不同,"这是什么意思?


    这里的所有想法对我都不起作用,但我感谢所有人的努力——在我的例子中,是一个引用类库项目的Windows应用程序——我可以调试Windows应用程序,但不能调试类库。正在生成PDB文件。但是,我发现如果我调试对类库的调用,我就可以进入类库。


    我已经完成了清理和重建工作。那不起作用(通常是这样)。现在,我在通过服务调用之前附加到w3wp,然后让它调用服务一次,命中另一个断点,然后更改执行点,使它再次运行同一行(调用服务),然后它实际上在服务方法内的断点处停止。


    对于我的Xamarin应用程序,它最终在我彻底清除源代码管理文件夹、执行"获取最新信息"并重新构建解决方案之后开始调试。


    在我的例子中,这是在Windows更新之后开始的,结果Windows更新关闭了Internet信息服务,这使得我的API似乎无法达到我设置的断点,但实际发生的是,IIS无法启动,因此我的应用程序代码没有实际运行。

    再次检查Windows功能菜单中是否启用了Internet信息服务。

    IIS说明:

    • 控制面板
    • 程序
    • 打开或关闭Windows功能
    • 勾选Internet信息服务
    • 重新启动Visual Studio

    如果使用IIS Express:

    从旧的控制面板打开"添加/删除程序",在IIS Express上运行修复程序,或者您可以转到控制面板->>程序->>程序和功能->>打开或关闭Windows功能->>Internet信息服务并检查父Internet信息服务文件夹。

    我在这里得到了这个答案:指定的参数超出了有效值的范围。参数名称:站点


    我正在使用IE8并尝试对一些JavaScript文件进行更改。虽然代码正在执行,但它不会在断点处停止,并且我在断点处收到相同的消息。升级到IE11为我解决了这个问题。


    不,我是为了什么?安多·安特尔·托多·奥多·BP公司的问题是:Estava,sendo-assim,o recoperado的断点。

    在我的例子中,我在方法调用中给出了f11,强制输入问题bp所在的方法,因此中断点被恢复。


    有许多不同的解决方案可以解决这个问题。

    另一个解决方案是确保代码是可访问的。例如:

    函数中返回后添加的任何代码。添加一个goto可以有效地跳过具有断点的代码。

    我不是说这些是正常的,但它们也是原因。


    如果既有C语言,又有本机代码(C/C++),请确保为项目启用本机调试:1。右键单击解决方案资源管理器中的启动项目2。选择属性三。选择"调试"选项卡4。确保已启用本机代码调试Enable native code debugging


    通过启动外部应用程序调试程序集时,需要考虑一些额外的注意事项:

    • 外部应用程序可以从清单文件加载自己的程序集(DLL)副本。(例如,文件appname.exe.manifest)如果是,您需要通过手动更改清单来禁用此功能。

    • 即使没有清单,外部应用程序也可以尝试从自己的文件夹中的DLL加载。您必须删除/重命名这些。

    完成这些步骤后,应该正确加载在调试器中运行的程序集版本,并且可以正常调试。


    我在调试WP7应用程序的后台代理时遇到了这个问题。事实证明,这个调试问题只是实际问题的一个症状:我的后台代理根本没有在调试模式下运行。我遵循了以下关于如何实现后台代理的指南:http://msdn.microsoft.com/en-us/library/hh202941(v=vs.92).aspx

    …但忘了补充

    1
    #define DEBUG_AGENT

    这意味着我的代理从未真正以调试模式启动。一旦添加了这一行,这个线程所涉及的问题就消失了。


    我认为源代码如果这个错误是,调试符号在构建发布后很难呈现到解决方案中。

    我尝试了所有其他的答案——通常是重新生成.pdb符号,或者检查它们的位置,清理和重建项目,确保活动配置不被释放等等。

    最终对我起作用的是右键单击解决方案资源管理器>调试>启动新实例中的项目。


    以下步骤为我分岔:

  • 转到项目的"bin"文件夹。
  • 删除"debug"文件夹。
  • 重新构建项目。
  • 将重新创建调试文件夹。
  • 现在可以再次开始调试。


    对于出现此错误的某些情况,另一种解决方案是:检查您的生成操作。

    我在一个ASP.NET MVC3项目中遇到了这个问题;我的一个控制器出于某种未知的原因将其生成操作设置为EntityDeploy,尽管它应该是编译的。


    另一个解决方案是发布无法进入主项目的bin文件夹的项目。


    我的丢失主要是因为我有两个项目停在同一个iisexpress url上,请确保指定了不同的端口并点击CreateVirtualDirectory。


    我意识到这是一条老路,但为了其他人的利益,这里发生在我身上的事情。问题在于我如何应用设计器属性。我创建了一个设计器类。设计器重写了PrefilterProperties以使Anchor、AutoScroll和AutoSize属性为只读。

    1
    2
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
    public class j2aScrollableContainerDesigner : ParentControlDesigner

    我创建了一个类并添加了我的设计器。这是将设计器属性附加到类的标准方法,可以在许多msdn示例中找到。显然没有使用设计器,因为当我将控件放在窗体设计图面上时,上面提到的所有属性在属性网格中都不是只读的。

    1
    2
    [Designer(typeof(j2aScrollableContainerDesigner), typeof(ParentControlDesigner))]
    public partial class j2aScrollableContainer : UserControl

    出于绝望,我将类上的设计器属性声明更改为以下签名,现在调用设计器。我没有解释为什么一种方法有效,另一种方法无效。如果我恢复到上面的设计器属性声明,设计器将再次退出工作。

    1
    2
    [Designer(typeof(j2aScrollableContainerDesigner))]
    public partial class j2aScrollableContainer : UserControl

    在尝试了这些之后,最终对我起作用的是:

    Debug > Options > General中,取消选中Enable Edit and Continue


    Project > Projt> C++>通用>调试信息格式-程序数据库(/ZI)

    我已经检查了Linker>调试,并且已经生成了调试信息。启动应用程序时,加载了符号(调试>窗口>模块)。设置调试信息格式为我修复了它。希望这能帮助别人!


    主项目同时具有对同一项目的项目引用和文件引用。

    在我的例子中,主项目有两个引用,一个是项目引用,另一个是文件引用,指向由同一个项目生成的dll。

    因此,PDB文件没有被复制到主项目的bin文件夹中,导致符号不可用。


    我不小心在文本编辑器中打开了项目文件,它被卸载了。不太可能,但如果你被卡住了就去看看。


    在qt.pro生成的项目中也存在这个问题。结果我忘了设置一个环境变量来确定属性/general/output目录。琐碎的一个,一开始就要看一看,但有时我们错过了明显的。


    也许你不应该做一个AutoPostBack
    如果您的代码没有进行回发,则可以得到此错误。问候。


    有时,由于某些原因,IIS会保留文件。我不得不删除网站并重新创建,问题就消失了。


    把这个放在这里,希望它能帮助别人。

    关于一个Web服务,我有缺失的符号问题。

    DAFT解决方案是,在构建解决方案时,安装项目没有设置为构建,这意味着当我右键单击安装项目并安装服务,然后连接到进程时;相同的过期服务没有安装PDB,因为它不匹配=没有工作断点。

    手动解决方案是右键单击安装项目并构建它,然后从中安装。然后,我修改了解决方案项目构建列表,以便在以调试模式构建解决方案时包含安装项目。


    我的同事遇到了这个问题,采取了与这里类似的步骤,但解决方法与给出的任何一个都不同。

    她要调试的代码位于当前项目引用的项目中,并且它从未在Visual Studio会话中运行。在删除了该项目根本无法运行的消息后,DLL正在GAC文件夹中运行,并在尝试运行时引发异常。解决方案是在本地文件夹中包含引用的项目。

    从SolutionExplorer:

  • 选择将要用完的"调试"项目
  • 展开引用(如果不可见,请选择菜单"项目",项"显示所有文件")。
  • 右键单击具有不工作断点的项目,选择"属性"
  • 将copy local的值从false更改为true
  • 再试一次。(对她有用!)


    还有一个对我有用的建议。

    如果您的项目/库已签名,甚至没有延迟签名,那么它仍然可能无法调试。尝试禁用签名选项,调试它,然后还原签名选项。


    为了我:

    • 打开解决方案属性
    • 选择"公用属性"/"调试源文件"
    • 在"Do not look for these source files"(不要查找这些源文件)窗口中,删除几乎可以确定存在错误的文件。

    我设置了一个断点,在执行代码时在该断点上得到了这个消息。但是,断点只能由单元测试访问。我必须右键单击单元测试并选择"调试单元测试"DOH!


    在我的例子中,使用依赖注入(dependency injection),autopac可以通过扫描程序集自动解决问题。一个引用的程序集未得到解析。

    我的修复方法是直接引用程序集中的类来强制Visual Studio加载程序集。当应用程序运行时,仅将程序集作为引用不会加载程序集。


    我的理由是不赞成telerik openaccess ORM。安装了新版本,然后就可以工作了。必须下载并安装。只有nuget更新不起作用。其他人也提到过


    在我的情况下,Visual Studio在全局程序集缓存(GAC)中加载DLL,而不是在我的项目列表中加载DLL。我删除了GAC中的DLL,现在我可以看到断点工作了。


    这可能是由于测试项目、Web项目或其他执行项目对与加载的模块同名的项目具有nuget引用所致。

    以解决方案中的以下项目为例:

    • Vendor.ABC
    • MyLib(参考vendor.abc)
    • MyProg(控制台程序:仅引用mylib)
    • MyProg.Web(MVC项目:参考mylib和解决方案项目供应商.abc)
    • MyLib.Test(试验项目:参考文献mylib和nuget包供应商.abc)

    MyProgMyProg.Web都将加载调试符号。MyLib.Test将不加载调试符号。


    检查是否已启用"仅启用我的代码"。如果是,禁用它。


    在Visual Studio中检查

    构建=>配置管理器=>活动解决方案配置

    如果设置为释放而不是调试,则不会命中任何断点。


    试着这样做。这对我很有用。

    调试=>选项=>常规=>删除"仅启用我的代码"复选标记


    尝试干净地构建解决方案。为我工作。


    我想弄明白为什么我的javascript文件不能调试,我花了很多时间在"脚本文档"(加载的脚本)中才意识到我的脚本不在那里。

    设计师编辑了页面标题,并将我的个人dev javascripts替换为组合的小型版本。直到半小时的谷歌搜索和调试尝试我才意识到。

    所以基本上我建议在调试时查看这个列表。如果不在里面,就不能调试。多哈。

    设计师做了正确的事情,它应该发生在发布阶段,而不是测试阶段。脚本所包含的列表也很好,因此可以为开发人员重新构建它。

    顺便说一句,我试过上面的模块,显然不是这样。该脚本实际上没有加载到项目中。叹息。