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

我试图configurationVisual Studio 2012,让我步入ASP.NET MVC 4.0源代码。 ( System.Web.Mvc.dll )。 我遵循SymbolSource的推荐configuration,但是当我尝试加载符号时,Visual Studio找不到它们。

推荐configuration

要将符号/服务器configuration为使用Visual Studio,请按照以下说明进行操作:

  1. 进入工具 – >选项 – >debugging器 – >常规。
  2. 取消选中“只启用我的代码(仅pipe理)”。
  3. 取消选中“启用.NET框架源代码”。 是的,这是误导,但如果你不这样做,那么Visual Studio将忽略你的自定义服务器顺序(详见下文)。
  4. 选中“启用源服务器支持”。
  5. 取消选中“要求源文件完全匹配原始版本”
  6. 转到工具 – >选项 – >debugging器 – >符号。 为本地符号/源cachingselect一个文件夹。
  7. 在“符号文件(.pdb)位置”下添加符号服务器。 请注意正确的顺序,因为有些服务器可能包含相同二进制文件的符号:有或没有源。 我们推荐以下设置:
    • http://referencesource.microsoft.com/symbols
    • http://srv.symbolsource.org/pdb/Public或authentication变体(见上)
    • http://srv.symbolsource.org/pdb/MyGet或authentication的变体(参见上文)(其他具有源代码的符号服务器)
    • http://msdl.microsoft.com/download/symbols (其他符号服务器没有来源)

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

有没有人有成功做到这一点与MVC 4.0?

只需添加一个符号服务器,服务更多,然后只是主要版本。

试试这个,包含最小的构build。

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

校验:

以pipe理员身份运行VS。

检查是否有东西已经下载到您的符号caching目录。

转到只select指定的模块。 添加“System.Web.Mvc.dll”

在你的代码中设置一个断点。 开始debugging。 当任何mvc.dll行中的断点点击右键单击callstack时。 validation是否加载了符号。 如果加载,请尝试在一个callstack行上打开mvc源代码。

回到你遇到麻烦的地方。

我会对Luke Gumbley的一个改进者进行一些改进。

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

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

我尝试了卢克·格鲁比(Luke Gumbley)的build议。 但是,一旦你卸载MVC,你的MVC项目将不会被加载,你不能创build一个新的MVC项目,因为模板不见了。 所以请不要中断MVC。 如果你这样做,你仍然需要重新安装它。 这浪费了时间。

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

 gacutil /u System.Web.Mvc 

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

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

众所周知(例如,请参见此处 )Microsoft在http://aspnetwebstack.codeplex.com/上提供了;.NET的当前源代码。 在文章中描述了如何使用ASP.NET的Nightly版本 (代码的当前开发者状态)。 如果您在下载RTM版本的ASP.NET 4.5(使用ASP.NET MVC 4.0)时遇到问题,您可能更喜欢使用而不是Nightly版本,那么您之前没有使用过Git。 不过,RTM版本的完整源代码的下载是很容易的。 你只需要知道Git允许保存分支或标记版本的代码副本。 通过这种方式,您可以访问(并下载)到完整代码的一些以前的版本。 例如,链接为您提供了jQuery 1.8.2而不是另一个链接,为您提供可能不稳定的最新开发者版本。 所以要下载RTM版本的源代码,只需要select“v2-rtm”分支,然后点击“下载”:

在这里输入图像说明

您可以使用链接直接select“v2-rtm”分支。

我可以重复一遍, 这不完全是你问的 ,我知道编译ASP.NET源代码也可能有点棘手,但我决定写信息。 如果有人会build议你更好的解决scheme,这也将是我有趣的。

我有完全相同的问题(正确的版本,但没有符号),但经过一天左右的尝试,我已经能够得到它的工作。 这些都是适合我的全面指导,它们可能包含不必要的步骤:

  1. 注册SymbolSource并使用经过身份validation的URL表单按照VS说明进行操作
  2. 使用添加/删除程序卸载所有版本的MVC
  3. 从GAC中删除MVC程序集 (问题是关于修改MVC,但GAC答案是好的)
  4. 使用NuGet删除然后重新安装MVC 4引用到您的项目
  5. 开始debugging,打开模块窗口,并跨越你的手指,“符号加载”出现在System.Web.MVC旁边。

(在你认为合适的时候重新启动,对于我来说最后一步是重新安装NuGet参考)

我的理论是,由于GAC库在运行时优先于本地引用,因此在search时不会find这些符号。 通过从GAC中删除MVC,然后重新安装NuGet引用,似乎使用了本地引用,并find了符号。 这是违反直觉的,因为System.Web.MVC.dll文件在NuGet和GAC之间是二进制等价的,虽然它们的date不同。

我并不完全相信,因为我试图为剃刀做同样的事情,但没有奏效。

首先让我们看看ReSharper提供了一个方便的对话框,可以随时访问代码:

在这里输入图像说明

因此,如果您钻取源代码,您将获得以下代码屏幕:

在这里输入图像说明

但是我很想好好亲自完成这个工作。 我从适当的pdbconfiguration开始:

在这里输入图像说明

之后,我得到了以下错误:

在这里输入图像说明

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

在这里输入图像说明

事实certificate,不匹配的版本只适用于浏览源代码,而不是debugging。 (当前机器有VS2012 RC,因此MVC库不是RTM)。 如果他们匹配,你会来源。

我仍然不知道为什么查找path不符合符号configuration。 希望这可以帮助。

这里有一些相关的信息: http : //aspnetwebstack.codeplex.com/discussions/399312在这里: 使用Symbolserverdebugging到ASP.NET MVC4每晚构build

我刚刚解决了这个问题。

问题是存储在GAC中的dll与symbolsource.org上发布的pdbs并不完全一致。 symbolource上的那个显然对应于通过Nuget提供的最新版本,并且GAC中的那个必须与.NET Framework 4.5一起安装。 (.Net使用GAC中的任何内容,然后尝试使用本地到你的项目的任何东西,你可以看到这个,当debugging时,进入Debug-> Windows-> Modules,那里的System.Web.Mvc.dll是GAC根据其path)

我所做的是在GAC中包含我的解决scheme的包文件夹中的System.Web.Mvc.dll,它是通过Nuget下载的。 这可以通过在VS命令提示符下使用gacutil来执行(以pipe理员身份运行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 not found

注意这里的子文件夹1E540B87149F4031B9CDEACAD8D771231(你的可能是不同的)

replace最近通过Nuget下载的GAC dll之后,消息是

来自http://srv.symbolsource.org/pdb/Public/的; SYMSRV: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中search的是正确find的。

希望这可以帮助