[源码学习]Razor在VS调试配置

1.ASP.NET MVC3源码下载        Codeplex        http://aspnet.codeplex.com/releases

 

image       2. 创建调试用的project TestMVC3         image    

 

3.添加ASP.NET MVC3源码中的下面几个project到调试用的solution中

 

 

 

其实刚开始做的时候是先做的第4步,然后通过vs错误提示找到下面这几个project的    System.Web.Helpers       System.Web.Mvc       System.Web.Razor       System.Web.WebPages       System.Web.WebPages.Deployment       System.Web.WebPages.Razor

 

 

 

image       4.修改TestMVC3 project的引用项为源码中的project        System.Web.Helpers      System.Web.Mvc       System.Web.WebPages

 

 

 

image 

 

 

 

按照最初的设想到这里应该是已经可以了,但是一运行,不行啊,继续。       5.修改TestMVC3的web.config

 

 

 

根目录web.config

 

<system.web> 下 <compilation>节

 

<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=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </assemblies>
    </compilation>
 
<runtime>节
 
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="null" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
 
刚开始以为到这里就可以了,运行发现会抛出assembly不一致的异常。
通过异常信息看到name为system.web.webPages.razor的section中配置的还是GAC中的assembly。
直接在project中查找system.web.webPages.razor,找到了Views目录中的web.config(昏头了怎么把它给抛在脑后了?)。
找到了就好办多了,看了看都是下载的源码中的project,直接把PublicKeyToken都改成null就ok了
 
 
F5,OK,熟悉的画面出来了吧
image
 
还有异常?是的,The controller for path '/favicon.ico' was not found or does not implement IController.
这个都知道怎么解决吧,或者说可以忽略了。
1:加上favicon.ico
2:在Global.asax文件的路由器配置中加上
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

posted on   dz45693  阅读(6190)  评论(4编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示