Подтвердить что ты не робот

Где символы для RTM для ASP.NET MVC 4.0?

Я пытаюсь настроить Visual Studio 2012, чтобы позволить мне войти в исходный код ASP.NET MVC 4.0. (System.Web.Mvc.dll). Я придерживался рекомендуемой конфигурации SymbolSource, но когда я пытаюсь загрузить символы, Visual Studio не может их найти.

Рекомендуемая конфигурация

Настройка Visual Studio для символа/сервера используйте следующие инструкции:

  • Перейдите в Инструменты → Параметры → Отладчик → Общие.
  • Снимите флажок "Включить только мой код (только управляемый)".
  • Снимите флажок "Включить исходный шаг .NET Framework". Да, это вводит в заблуждение, но если вы этого не сделаете, то Visual Studio игнорируйте свой заказ на сервер (см. далее).
  • Установите флажок "Включить источник сервер поддержки".
  • Снимите флажок "Требовать, чтобы исходные файлы соответствовали оригинальная версия"
  • Перейдите в Инструменты → Параметры → Отладчик → Символы. Выберите папку для локального символьного/исходного кеша.
  • Добавить серверы символов в разделе "Файл символьного файла (.pdb)". Обратите внимание на правильное потому что некоторые серверы могут содержать символы для одних и тех же двоичных файлов: с источниками или без них. Мы рекомендуем следующую настройку:

Я знаю, что исходный код доступен в CodePlex, однако я особенно заинтересован в том, чтобы вступить в код, используя вместо этого сервер символов от необходимости отключать Mvc от GAC и ссылаться на локально собранную сборку.

Кто-нибудь имел успех с MVC 4.0?

4b9b3361

Ответ 1

Просто добавьте сервер символов, который обслуживает больше основных выпусков.

Попробуйте это, содержит большинство небольших сборников.

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

Убедитесь, что:

Запустите VS как администратор.

Убедитесь, что что-то было загружено в каталог кеша символов.

Выберите только указанные модули. Добавьте "System.Web.Mvc.dll"

Задайте точку останова в коде. Запустите debug. Когда точка останова нажимает rightclick в callstack на любой строке mvc.dll. Убедитесь, что символы загружены. если он загружен, попробуйте dubbleclick в одной строке столбец, чтобы открыть источник mvc.

Вернитесь туда, где у вас проблемы.

Ответ 2

Я сделаю некоторые уточнения для Люка Гемблея.

Microsoft пытается упростить жизнь разработчика. Всякий раз, когда он выпускает установщик версии MVC, также должен быть загружен источник. Поэтому люди могут использовать источник для изучения того, что установлено установщиком, а также для отладки MVC.

Вернемся к способу загрузки информации об отладке MVC. Ваша Visual Studio (я использую 2010) никогда не будет пытаться загружать файлы MVC PDB с вышеупомянутых серверов, если в вашей системе установлен MVC4. В этом случае ваша Visual Studio будет использовать MVC из вашего GAC при запуске отладчика.

Я пробовал путь, предложенный Люком Гэмбли. Однако, как только вы удалите MVC, ваш проект MVC не будет загружен, и вы не сможете создать новый проект MVC с момента исчезновения шаблона. Поэтому, пожалуйста, не unistall MVC. Если вы это сделаете, вам все равно нужно переустановить его. Это тратит время.

Что вам действительно нужно сделать, это выйти из Visual Studio, запустить команду

gacutil /u System.Web.Mvc

Затем перейдите в C:\Windows\Microsoft.NET\assembly\GAC_MSIL, удалите или переименуйте оскорбительную папку System.Web.Mvc. После этого lanuch ваша Visual Studio и извлеките пакет MVC из NuGet.

Ответ 3

Я не могу ответить на ваш вопрос напрямую и предоставить вам URL с символами (.pdb) для System.Web.Mvc.dll для ASP.NET MVC 4.0, но, вероятно, я могу помочь вам решить проблему по-другому.

Как известно (см. здесь) Microsoft предоставляет текущий исходный код .NET на http://aspnetwebstack.codeplex.com/. В в сообщении описано, как использовать ночную версию ASP.NET(текущее состояние разработчика кода). Если вы не использовали Git, прежде чем возникли проблемы с загрузкой RTM-версии ASP.NET 4.5 (с ASP.NET MVC 4.0), которую вы могли бы предпочесть использовать вместо версии Nightly. Тем не менее, загрузка полного исходного кода RTM-версии достаточно проста. Вам нужно только знать, что Git позволяет сохранять копию кода в ветках или помеченных версиях. В способе вы можете получить доступ (и загрузить его) к некоторым предыдущим версиям полного кода. Ссылка, например, предоставит вам jQuery 1.8.2 вместо другую ссылку получите последнюю версию разработчика, которая может быть нестабильной. Поэтому, чтобы загрузить исходный код RTM-версии, вам просто нужно выбрать ветку "v2-rtm", а затем нажать "Загрузить":

enter image description here

Вы можете использовать ссылку, чтобы напрямую выбрать ветку v2-rtm.

Я могу повторить, что это не совсем то, что вы просили, и я знаю, что компиляция исходного кода ASP.NET также может быть немного сложной, но я решил написать информацию. Если кто-то предложит вам лучшее решение, мне было бы интересно.

Ответ 4

У меня была точно такая же проблема (правильная версия, но без символов), но через день или около того я попробовал все, что мне удалось заставить работать. Это все доступные для меня инструкции, они могут содержать ненужные шаги:

  • Подпишитесь на SymbolSource и следуйте инструкции VS, используя аутентифицированная форма URL
  • Удалите все версии MVC с помощью программ для добавления/удаления
  • Удалить сборку MVC из GAC (вопрос заключается в изменении MVC, но ответ GAC хорош)
  • Удалите и переустановите ссылку MVC 4 на ваш проект с помощью NuGet
  • Начните отладку, откройте окно модулей и скрестите пальцы что "Загруженные символы находятся рядом с System.Web.MVC, когда он появляется.

(посыпать в перезагрузке, как вы считаете нужным, для меня ключевым конечным шагом была переустановка ссылки NuGet)

Моя теория заключается в том, что, поскольку библиотека GAC используется во время выполнения в предпочтении локальной ссылки, символы не обнаруживаются при их поиске. Удалив MVC из GAC, а затем переустановив ссылку NuGet, кажется, что используется локальная ссылка и найдены символы. Это противоречиво, так как файлы System.Web.MVC.dll эквивалентны двоичному эквиваленту между NuGet и GAC, хотя они датируются по-разному.

Я не полностью убежден, хотя, как я пытался сделать то же самое для Razor, и это не сработало.

Ответ 5

Позвольте мне начать с того, что 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). Если они совпадают, вы будете источником.

Я до сих пор не знаю, почему путь поиска не соответствует настройке символа. Надеюсь, это поможет.

Ответ 7

Я решил эту же проблему.

Проблема в том, что DLL, хранящаяся в GAC, не соответствует точно опубликованным pdbs на symbolource.org. Тот, который на символьных источниках, по-видимому, соответствует последней версии, доступной через Nuget, а тот, что в GAC, должен быть установлен с .NET Framework 4.5. (.Net использует все, что есть на GAC, прежде чем пытаться использовать что-либо локальное для вашего proyect, вы можете увидеть это, когда debuggin, перейдите в Debug- > Windows- > Modules, там System.Web.Mvc.dll - тот, который из GAC по его пути)

Я сделал, чтобы включить в GAC файл System.Web.Mvc.dll в папку пакета моего решения, загруженную через Nuget. Это можно сделать, используя gacutil в командной строке VS (запустите VS Cmd как admin).

Вы можете проверить те же модули Windows, щелкнув правой кнопкой мыши на System.Web.Mvc.dll, а затем на информацию о загрузке символов. С "старой" dll gAC вы получаете сообщение вроде (часть его)

SYMSRV: http://srv.symbolsource.org/pdb/Public/System.Web.Mvc.pdb/1E540B87149F4031B9CDEACAD8D771231/System.Web.Mvc.pdb не найден

Обратите внимание, что вложенная папка 1E540B87149F4031B9CDEACAD8D771231 (ваша может отличаться)

После замены DLL GAC для недавно загруженного через Nuget сообщение

SYMSRV: System.Web.Mvc.pdb из http://srv.symbolsource.org/pdb/Public: 336067 байт

http://srv.symbolsource.org/pdb/Public: Символы, загруженные с сервера символов.

C:\Users\\AppData\Local\Temp\SymbolCache\System.Web.Mvc.pdb\68B2330E48624B6C9DE05BED1C8C320F1\System.Web.Mvc.pdb: загруженные символы.

Обратите внимание, что вложенная папка 68B2330E48624B6C9DE05BED1C8C320F1, которая является искомой в символах source.org, правильно найдена.

Надеюсь, что это поможет