调试ASP.NET MVC源码?

时间:2009-06-02 19:09:44

标签: asp.net-mvc debugging

尝试调试ASP.NET MVC 1.0源代码时,我遵循these之类的指令,基本上从我的web项目中删除对system.web.mvc的引用,并添加我下载的源项目。

现在,我有这个问题,

  

类型'System.Web.Mvc.FormMethod'   存在于两者中   'c:\ Windows \ assembly \ GAC_MSIL \ System.Web.Mvc \ 1.0.0.0__31bf3856ad364e35 \ System.Web.Mvc.dll'和我的AppData \ Local \ Temp \ Temporary   ASP.NET   文件\根\ dbcbb149 \ 897fc019 \组件\ DL3 \ 796c00fb \ f345f2d6_abe3c901 \ System.Web.Mvc.dll程序'

我尝试在web.config中注释掉以下内容

<add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

但它会产生差异

  

类型'System.Web.Mvc.Controller'   在一个不是的程序集中定义   引用。您必须添加引用   装配'System.Web.Mvc,   版本= 1.0.0.0,文化=中立,   公钥= 31bf3856ad364e35' 。

有人可以帮助解决出错的问题以及如何解决问题。非常感谢你!

6 个答案:

答案 0 :(得分:7)

无需从GAC卸载ASP.NET MVC! (或任何<assemblyBinding>个)只需按照“Using the ASP.NET MVC source code to debug your app”文章的步骤进行操作。

有几个类似于你的问题:

答案 1 :(得分:1)

GAC中的system.web.mvc程序集是什么?你可能需要删除它们......这当然会搞乱未来的项目,因为项目模板可能会认为它们属于gac。

您还可以尝试使用<assemblyBinding>功能described here将mvc内容指向您正在运行的版本。

答案 2 :(得分:1)

假设您链接的组件的完全限定程序集名称与GAC中的名称不同,请使用<QualifyAssembly> element并指定您实际链接到的程序集。如果没有,请更改您的本地源以将您正在构建的MVC程序集更改为1.0.0.1,这样就不同了。

修改:仔细检查您关联的方式。它对我有用。

  1. 删除了我项目中的system.web.mvc参考。
  2. 从源代码添加了System.Web.Mvc项目。
  3. 在我的项目的web.config中注释掉System.Web.Mvc引用。
  4. 修改了System.we.b.mvc的/Views/Web.Config,如howto中所述。
  5. 完美无缺。

答案 3 :(得分:0)

对于qualify程序集部分,您需要这样的东西(我们为SQLite程序集执行此操作):

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <qualifyAssembly partialName="System.Data.SQLite" fullName="System.Data.SQLite, Version=1.0.60.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </assemblyBinding>
  </runtime>

答案 4 :(得分:0)

请查看本文,了解有关如何setup MVC source的完整指南。

您需要更新两个web.config文件。一个位于MVC项目文件夹中,一个位于Views文件夹中。很可能你忘了更新后者。否则,按照上述条款应该这样做。

答案 5 :(得分:0)

稍微更全面的Steve Sandersons说明can be found here

它解释了如何在调试中包含MVC Futures。