“未加载mscorlib.pdb”但mscorlib.dll仍不丢失


73

我在VS2012中运行我的应用程序,并且遇到运行时错误; 在此处输入图片说明

当我在“原始位置”中查看时,我看到了mscorlib.dll,但没有看到mscorlib.pdb。

为什么会发生这种情况,我该如何解决?


2
这很正常。您将不会找到源,也没有.NET Framework的源代码。专注于修复您的错误,mscorlib.dll没有错误。使用Debug + Windows + Call Stack查找您的代码。
Hans Passant 2014年

2
问题仍然存在于VS2015
AXMIM'Feb 26'16

Answers:


146

转到工具,选项,调试,常规,仅启用我的代码

这将防止调试器尝试在内部.NET Framework程序集上启动。


4
将其标记为答案将使每个人都受益匪浅
Michael Brown

仅启用了我的代码,但按F11时仍然出现此错误。它非常烦人,不允许我调试代码。
M.kazem Akhgary

1
这对我有用,虽然我不记得这是一个问题,但很奇怪。我认为我可以并且应该能够在不启用“仅我的代码”的情况下进行调试。好吧
yedevtxt

很好的答案-我在这个问题上苦苦挣扎了一段时间,然后找到了这个答案,谢谢!
史蒂夫

9

转到工具,选项,调试,符号并设置缓存位置。然后点击上面的load,它将为您获取必要的符号,并将其存储在您提供的缓存位置。

Microsoft的编译器工具在扩展名为.pdb的单独文件(程序数据库)中创建符号。这使他们可以为发布二进制文件创建分离的符号。使用符号服务器,您的IDE可以在调试期间获取与DLL的特定版本匹配的符号文件。您也可以为自己的产品二进制文件配置此系统,这对于事后调试最终用户计算机上的任何崩溃非常有用。

有关使用公共符号的更多详细信息,请参见Microsoft文档


我看了看,缓存位置已经设​​置好;C:\ Users \ xxxxxx \ AppData \ Local \ Temp \ SymbolCache。当我查看该目录时,它是空的。我应该使用其他位置吗?单击负载没有任何区别。
arame3333

我使用一个永久位置,但这只是为了避免一直重新获取pdb。它需要使用http来获取符号文件,因此请确保您可以正确访问msdl.microsoft.com/download/symbols。在空白页的Web浏览器中,但没有错误。
patthoyts,2014年

是的,我得到一个空白页。我可以从哪里获得pdb?
arame3333

您阅读了建议的网页,并尝试使用带有适当参数的symchk命令来标识您感兴趣的文件以及要将符号缓存到的位置。
patthoyts,2014年

1
这个答案似乎很有希望,并且比Wallbasher的答案更好,但是我无法使它起作用。似乎arame3333也不能。我的确看到了一些“正在加载符号”弹出窗口,但是最终得到了相同的结果。
AXMIM '16

2

我在使用静态变量时遇到了这个问题,该变量的值是通过静态方法分配的。

因此,每当我运行该应用程序时,此行代码就会引发异常。如果将调试点放置在此位置(如我所做的那样),则会注意到抛出了异常。


我遇到过同样的问题。谢谢你的提示。
sfarbota

2

解决此错误的最佳方法是:

1:打开App.config文件。

2:将此useLegacyV2RuntimeActivationPolicy="true"代码粘贴到启动标记中。

3:保存。

现在错误将消失。此外,请参见这个图像。我为你做了。


3
您可以将配置添加为文本而不是图片吗?复制/粘贴更容易
slfan '16

我已经提到了将在启动标记中添加的代码行useLegacyV2RuntimeActivationPolicy =“ true”。很清楚。图片仅供参考。
穆罕默德·阿巴斯

1

发生这种情况的原因有所不同:我引用了旧版本的NLog(2.0),而需要引用版本4.0。


0

在VB控制台应用程序中,就我而言,以上都不是。

只需在subs之前的Dim声明中执行字符串计算。

令人反感的代码:

Dim FylPrefix $ = Fyl.Substring(0,Fyl.LastIndexOf(“。”))

将此计算移到需要修复的子项中!杰罗尼莫!!


您能解释一下为什么/为什么要修正它吗?
toonarmycaptain

基本上,VS并未将其报告为应有的编译错误。它允许该应用生成并运行。但这是一个错误-在进行程序之前,在DIM声明区域中进行了两次计算。
Runner66年

0

该线程很旧,但是如果您像我一样登陆此处,但上述解决方案都不对您有用,这就是我解决这一僵局的方法:在我的情况下,在我更改了“应用程序”中的“程序集名称”后,异常开始出现属性窗口的标签。如果是这种情况,请尝试恢复为原始名称,然后查看异常是否消失。可能的原因是新名称与“ AssemblyInfo.cs”中的“ AssemblyTitle”不匹配


-1

当您在类声明中初始化变量并且初始化引发异常时,可能会发生这种情况:

class Program
{
    static OracleConnection ora = getOracleConnection(); 

}
static void main(string[] args) 
{
    ora.Open();
}
static OracleConnection getOracleConnection()
{
   OracleConnection orax = new OracleConnection(description=(host=myHost)
    (port=1521)(protocol=tcp))(connect_data=(sid=mySid)));user id=user;password=pw;
}

如果getOracleConnection()引发异常,则可以获取此错误。将您的分配(但不一定是您的声明)移到main(无论如何属于)内部,您将得到导致错误的实际异常,而不是mscorlib错误。


-2

如果您在visualstudio中有这种类型的项目运行时错误答案:Cntr + Alt + E打开“例外”窗口取消选中所有复选框,必须并应由B sriram Mca Giet College编写,东戈达尔瓦里,rajahmundry,2014年批处理


您在这里宣传您的位置和学位吗?
kk。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.