2009-06-02 95 views
6

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

现在,我有这个问题,

类型 'System.Web.Mvc.FormMethod' 存在于两个 “C:\ WINDOWS \装配\ GAC_MSIL \ System.Web.Mvc \ 1.0 .0.0__31bf3856ad364e35 \ System.Web.Mvc.dll程序”,在我的应用程序数据\本地的\ Temp \临时 ASP.NET 文件\ ROOT \ 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,Culture = neutral, PublicKeyToken = 31bf3856ad364e35'。

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

Ray。

+0

这听起来像你有一个副本在斌和在GAC。你有没有在你的bin文件夹中的System.Web.Mvc副本(确保你正在查看所有文件) – 2009-06-02 19:25:16

+0

我引用了源项目,所以在编译之后,我的bin中会有一个副本。 – 2009-06-02 19:51:31

回答

1

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

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

+0

是的,我使用Web PI安装mvc,因此它在GAC中。有没有更简单的方法来解决这个问题。我真的不想从GAC中删除它或将其卸载。 – 2009-06-02 19:16:43

1

假设您要链接到的标准装配名称与GAC中的标准装配名称不同,请使用<QualifyAssembly> element并指定您实际链接到的装配。如果没有,请更改您的本地源代码以将您正在构建的MVC程序集更改为1.0.0.1,因此它是不同的。

编辑:仔细检查你如何链接。它为我工作。

  1. 删除了我的项目中的system.web.mvc引用。
  2. 从源添加了System.Web.Mvc项目。
  3. 在我的项目的web.config中注释掉System.Web.Mvc引用。
  4. 按照howto中的说明修改了System.we.b.mvc的/Views/Web.Config。
  5. 冉无瑕。
+1

不太清楚这是如何工作的,你是否有我可以用来完成这项工作的行。试图改变它到1.0.0.1,并没有真正的工作。 – 2009-06-02 19:25:23

+0

查看Richard的答案,您可能需要更新mvc项目的程序集信息,以便版本与GAC中的版本不同。 – hometoast 2009-06-02 19:35:21

0

你想是这样的资格组装部件(我们这样做的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> 
0

看一看这篇文章的完整指南对如何setup MVC source

您需要更新两个web.config文件。一个在MVC项目文件夹中,另一个在Views文件夹中。你可能忘了更新后者。否则,遵循上述文章应该做到这一点。

0

A的史蒂夫Sandersons指令can be found here稍微更全面的版本。

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