Как отлаживать исходный код asp.net mvc 4?

Я загружаю последний исходный код отсюда: http://aspnetwebstack.codeplex.com/SourceControl/list/changesets

1) добавить проект system.web.mvc в мое Решение, включая другие проекты, от которых зависит проект system.web.mvc.

https://public.blu.livefilestore.com/y1pWkk8-pYVhCxrqVp3WTurqXOI290cw7uxGMfrKYoVDARFINGHUGUG1_02_05_05_05_05_05_05_05_05_05_05_05_05_05  1

2) изменить ссылку на сборку system.web.mvc в проекте «CollaborativeDesign.WebUI», «CollaborativeDesign.Domain», «CollaborativeDesign.UnitTest» с GAC на проект system.web.mvc.

https://public.blu.livefilestore.com/y1phd1RsSEDGBZU_w6ke0NNw19sa51cXXsYTPB05yhGBHKiNYPq_Hr1kdllengjvr

3) измените корневой файл Web.config, как показано ниже:

https://public.blu.livefilestore.com/y1pKu-Q0K765sayJazkM8OLmC-r-Kj2lkkq5fs6M0Kl6YwN5CtVrmbopkYp8M0Kl6YwN5CtVrmjpu.jpg  1

https://public.blu.livefilestore.com/y1pi3d9IWgFkCpnornqTMs4OQTBdC2IDL3YL2A51DFdjYE4wFcmjcnLY-NOFDJYE4wFcnjs_N_N_N_N_DJYE4wFcmjs_N_N_N_N_N0_04  ></p>

<p>4) измените файл Web.config в каталоге «Просмотр», как показано ниже:</p>

<pre><code><!--<pages validateRequest=

5) когда я запускаю проект, похоже, все еще используется GAC system.web.mvc.dll, потому что, когда я устанавливаю точку останова в файле «Controller.cs», который находится в проекте «system.web.mvc», он показывает, что не загружает никаких символов для документа, и я также не могу перейти к методу исходного кода mvc.

https://public.blu.livefilestore.com/y1pgt_xkjJLw3bPFj6R6z2EAyqxCYC4Yk0cfYUe4RCUEkYC5Vjn_cfyue4RCUEkYC4Vjqp_cfYUe4RCUEkYC5Vjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjf_wd</p>

<p>Как я могу отладить исходный код?  Как я могу узнать, что загруженная библиотека system.web.mvc.dll является GAC или моей локальной?</p>
    </div>

    <br>

    <div class=

person Owen Ou    schedule 31.03.2012    source источник
comment
Вам необходимо использовать строгое имя для сборки, иначе GAC победит. см. web.lookout.net/2006/04/   -  person RickAndMSFT    schedule 31.03.2012
comment
@ Rick.Anderson-at-Microsoft.com   -  person Owen Ou    schedule 01.04.2012
comment
@ Rick.Anderson-at-Microsoft.com Но System.web.mvc.dll, которая является результатом проекта system.web.mvc, уже имеет строгие имена. см. ссылку   -  person Owen Ou    schedule 01.04.2012
comment
@OwenOu Похоже, вы отредактировали ответ на свой вопрос, но вы должны были опубликовать его как ответ.   -  person Kyle Trauberman    schedule 01.04.2012


Ответы (3)


Согласно комментарию @ Rick.Anderson-at-Microsoft.com, я решил эту проблему, выполнив следующие дополнительные шаги:

1> Запустите sn.exe -Vr *, 31BF3856AD364E35 в визуальной командной строке.

2> Измените AssemblyVersion и AssemblyFileVersion в CommonAssemblyInfo.cs в проекте System.Web.Mvc с 4.0.0.0 на 4.0.0.1. Восстановите проект.

#if ASPNETMVC
[assembly: AssemblyVersion("4.0.0.1")]
[assembly: AssemblyFileVersion("4.0.0.1")]
[assembly: AssemblyProduct("Microsoft ASP.NET MVC")]
#elif ASPNETWEBPAGES

3> Измените файл Web.config в корневом каталоге.

<compilation debug="true" targetFramework="4.0">
    <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <!--<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null" />-->
        <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
        <!--<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />-->
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31BF3856AD364E35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.1" />
    </dependentAssembly>
    <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
</assemblyBinding>

4> Измените файл Web.config в каталоге просмотра.

<system.web.webPages.razor>
<!--<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />-->
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
    <add namespace="DevTrends.MvcDonutCaching" />
  </namespaces>

<!--<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
   <controls>
     <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
   </controls>
</pages>-->
<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <controls>
        <add assembly="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
    </controls>
</pages>

5> Перезапустите сервер разработки Asp.net. Хорошо, наслаждайтесь исходным кодом! Благодарим @ Rick.Anderson-at-Microsoft.com за комментарий.

изображение отладки

person Owen Ou    schedule 01.04.2012
comment
Мне нужно было добавить измененные библиотеки в gac (поэтому мне не нужно было обновлять каждую сборку в папке приложения) и перенаправление привязки для System.Web.Razor до последней версии, иначе представления не отображались бы, поэтому что-то вроде : ‹DependentAssembly› ‹assemblyIdentity name = System.Web.Razor publicKeyToken = 31bf3856ad364e35 /› ‹bindingRedirect oldVersion = 1.0.0.0-2.1.0.0 newVersion = 2.1.0.0 /› ‹/dependentAssembly› - person Adam Tuliper - MSFT; 06.09.2012
comment
Опубликовал более подробный пост в моем блоге - vijayt .com / Post / - person vijayst; 02.11.2013

Более простой способ, не требующий изменения исходного кода MVC, можно найти в документации по исходному коду MVC. Загрузите прикрепленный вложение SkipStrongNames, распакуйте его и запустите с помощью команды UAC с повышенными правами. быстрый. Если вы загружаете последнюю версию из GIT (git clone https://git01.codeplex.com/aspnetwebstack.git), вам может потребоваться изменить ссылки в файле views / web.config, чтобы использовать 3.0.0.0 вместо 2.0.0.0 и 5.0.0.0 вместо 4.0.0.0.

person bkaid    schedule 14.08.2012
comment
Я не уверен, что это работает как есть? Следующие шаги с помощью sn.exe решают проблему строгого имени, которую следует игнорировать для токена: 31BF3856AD364E35. кроме того, по умолчанию сборки 4.0.0.0 находятся в gac, который проверяется в первую очередь, поэтому при сохранении 4.0.0.0 будет использоваться версия gac, а 5.0.0.0 не удастся, поскольку эта версия не существует - если я не что-то здесь не хватает? У тебя это работает? - person Adam Tuliper - MSFT; 31.08.2012

Я могу использовать утилиту SkipStrongNames для отладки исходного кода ASP.NET MVC 4 с некоторыми изменениями настроек проекта. Подробные инструкции см. В моем блоге на странице Debug ASP Исходный код .NET MVC 4

person Chen Lu    schedule 18.02.2013