ASP.NET MVC 4.0 RTM的符号在哪里?

时间:2012-10-24 13:34:16

标签: asp.net-mvc-4

我正在尝试配置Visual Studio 2012以允许我进入ASP.NET MVC 4.0源代码。 (System.Web.Mvc.dll)。我跟着SymbolSource's recommended configuration但是当我尝试加载符号时,Visual Studio找不到它们。

  

推荐配置

     

为符号/服务器配置Visual Studio   使用,请按照以下说明操作:

     
      
  1. 转到工具 - >选项 - >调试器 - >一般
  2.   
  3. 取消选中“仅启用我的代码(仅管理)”。
  4.   
  5. 取消选中“启用.NET Framework源步进”。   是的,这是误导,但如果你不这样做,那么Visual Studio会   忽略您的自定义服务器订单(请参阅下文)。
  6.   
  7. 选中“启用来源”   服务器支持“。
  8.   
  9. 取消选中“要求源文件与之完全匹配   原始版本“
  10.   
  11. 转到工具 - >选项 - >调试器 - >符号。   选择本地符号/源缓存的文件夹。
  12.   
  13. 添加符号服务器   在“符号文件(.pdb)位置”下。注意正确   order,因为某些服务器可能包含相同二进制文件的符号:   有或没有来源。我们建议使用以下设置:      
  14.   

我知道源代码可用on CodePlex,但我特别感兴趣的是使用符号服务器进入代码,而不必从GAC中引用Mvc并引用本地构建的程序集。 / p>

有没有人用MVC 4.0做到这一点?

7 个答案:

答案 0 :(得分:15)

只需添加一个符号服务器,该服务器只提供主要版本。

试试这个,包含大多数次要版本。

http://srv.symbolsource.org/pdb/Public

验证

以管理员身份运行VS.

检查是否已将某些内容下载到符号缓存目录。

转到仅选择指定的模块。 添加“System.Web.Mvc.dll”

在代码中设置断点。开始调试。 当断点点击任意mvc.dll行的callstack中右键单击时。验证是否已加载符号。 如果加载,请在一个callstack行上尝试dubbleclick打开mvc源。

回到遇到麻烦的地方。

答案 1 :(得分:6)

我将对Luke Gumbley的anwser做一些改进。

Microsoft试图让开发人员的生活更轻松。每当它发布MVC版本安装程序时,也应该有一个Source来下载。因此,人们可以使用源来探索安装程序安装的内容,以及调试MVC。

回到下载MVC调试信息的方式。如果您的系统上安装了MVC4,您的Visual Studio(我使用2010)将永远不会尝试从上述服务器下载MVC PDB文件。在这种情况下,运行调试器时,Visual Studio将使用GAC中的MVC。

我尝试过Luke Gumbley建议的方式。但是,一旦卸载MVC,您的MVC项目将不会被加载,并且由于模板消失,您无法创建新的MVC项目。所以请不要松开MVC。如果这样做,您仍然需要重新安装它。这浪费了时间。

您真正需要做的是退出Visual Studio,运行命令

gacutil /u System.Web.Mvc

然后转到C:\Windows\Microsoft.NET\assembly\GAC_MSIL,删除或重命名有问题的System.Web.Mvc文件夹。在此之后,使用Visual Studio,并从NuGet获取MVC包。

答案 2 :(得分:4)

我无法直接回答您的问题,并为ASP.NET MVC 4.0提供System.Web.Mvc.dll符号(.pdb)的URL,但我可以帮助您以另一种方式解决问题。 / p>

众所周知(例如,请参阅here)Microsoft在http://aspnetwebstack.codeplex.com/上提供了.NET的当前源代码。在the post中,它描述了如何使用ASP.NET的夜间版本(当前开发人员的代码状态)。如果您在下载 RTM版本的ASP.NET 4.5(使用ASP.NET MVC 4.0)之前没有使用过Git,而您可能更喜欢使用它而不是Nightly版本。然而,下载RTM版本的完整源代码很容易。您只需要知道Git允许在分支或标记版本中保存代码的副本。在这种方式下,您可以访问(并下载)完整代码的某些先前版本。 The link例如为您提供jQuery 1.8.2而不是another link为您提供可能不稳定的最新开发人员版本。因此,要下载 RTM版本的源代码,您只需选择“v2-rtm”分支,然后单击“下载”:

enter image description here

您可以使用the link直接选择“v2-rtm”分支。

我可以重复一遍它不完全是你所要求的我知道编译ASP.NET源代码也可能有点棘手,但我决定写信息。如果有人建议你提供更好的解决方案,对我来说也会很有趣。

答案 3 :(得分:4)

我有完全相同的问题(正确的版本,但没有符号),但经过一天左右的尝试,我已经能够让它工作。这些是对我有用的全部说明,它们可能包含不必要的步骤:

  1. 注册SymbolSource并按照VS instructions使用 经过身份验证的网址表格
  2. 使用添加/删除程序卸载所有版本的MVC
  3. Remove MVC assembly from the GAC(问题是关于修改 MVC但GAC答案很好)
  4. 删除并重新安装MVC 4引用到您的项目 的NuGet
  5. 开始调试,打开模块窗口,然后交叉手指 当它出现时,'Symbols loaded'就在System.Web.MVC旁边。
  6. (按照你认为合适的方式重新开始,对我来说关键的最后一步是重新安装NuGet参考)

    我的理论是,由于GAC库在运行时优先于本地引用使用,因此在搜索时找不到符号。通过从GAC中删除MVC然后重新安装NuGet引用,似乎使用本地引用并找到符号。这是违反直觉的,因为System.Web.MVC.dll文件在NuGet和GAC之间是二进制等效的,尽管它们的日期不同。

    我并不完全相信,因为我试图为Razor做同样的事情,但是没有用。

答案 4 :(得分:1)

首先让我说ReSharper提供了一个方便的对话框,可以随时进入代码:

enter image description here

如果您钻取到源代码,那么您将获得以下代码屏幕:

enter image description here

但我很好奇手工完成这个。我从适当的pdb配置开始:

enter image description here

之后我收到以下错误:

enter image description here

接下来,我将C:\Users\Andrew\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\System.Web.pdb\CA49C4332DE847FA967F58AFF370B70E1\System.Web.pdb复制到C:\Users\Andrew\AppData\Local\Temp\SymbolCache\System.Web.pdb(以匹配查找路径)。之后我遇到了这个:

enter image description here

事实证明,不匹配的构建仅适用于浏览源,而不是调试。 (当前机器具有VS2012 RC,因此MVC库不是RTM)。如果匹配,你就是源头。

我仍然不知道为什么查找路径不适应符号配置。希望这会有所帮助。

答案 5 :(得分:0)

答案 6 :(得分:0)

我刚刚解决了同样的问题。

问题是存储在GAC中的dll与symbolsource.org上发布的pdb不完全对应。 symbolsource上的那个显然对应于Nuget提供的最新版本,而GAC中的那个必须与.NET Framework 4.5一起安装。 (.Net使用GAC上的任何内容,然后再使用你的proyect本地的任何东西,你可以看到这一点,当调试时,去调试 - > Windows->模块,那里的System.Web.Mvc.dll就是一个来自GAC,根据其路径)

我所做的是在我的解决方案的包文件夹中包含GAC中的System.Web.Mvc.dll,该文件夹是通过Nuget下载的。这可以通过在VS命令提示符下使用gacutil来实现(以管理员身份运行VS Cmd)。

您可以检查相同的模块Windows,右键单击System.Web.Mvc.dll,然后单击符号加载信息。使用“旧”GAC dll,您会收到类似(部分)

的消息
  

SYMSRV:找不到http://srv.symbolsource.org/pdb/Public/System.Web.Mvc.pdb/1E540B87149F4031B9CDEACAD8D771231/System.Web.Mvc.pdb

请注意子文件夹1E540B87149F4031B9CDEACAD8D771231(您的子文件可能有所不同)

更换最近通过Nuget下载的GAC dll后,消息为

  

SYMSRV:来自http://srv.symbolsource.org/pdb/Public的System.Web.Mvc.pdb:336067字节

     

http://srv.symbolsource.org/pdb/Public:从符号服务器下载的符号。

     

C:\ Users \\ AppData \ Local \ Temp \ SymbolCache \ System.Web.Mvc.pdb \ 68B2330E48624B6C9DE05BED1C8C320F1 \ System.Web.Mvc.pdb:已加载符号。

请注意,子文件夹68B2330E48624B6C9DE05BED1C8C320F1是在symbolsource.org中搜索到的子文件夹,是正确找到的。

希望这有帮助