代码之家  ›  专栏  ›  技术社区  ›  UpTheCreek

单步执行ASP.NET MVC 2源代码

  •  1
  • UpTheCreek  · 技术社区  · 14 年前

    我一直在尝试设置 ASP.NET MVC 2 RTM Source 用于我的应用程序,因此我可以在调试时单步执行模型绑定之类的操作。但是,我没能让它工作- 我犯了如下错误:

    The type 'System.Web.Mvc.Controller' is defined in an assembly that is not referenced. 
    You must add a reference to assembly 'System.Web.Mvc, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=31bf3856ad364e35'.
    
    The type 'System.Web.Mvc.Async.AsyncControllerActionInvoker' is defined in an assembly that is not referenced. 
    You must add a reference to assembly 'System.Web.Mvc, Version=2.0.0.0, Culture=neutral, 
    PublicKeyToken=31bf3856ad364e35'.
    

    等。。。

    我跟着台阶进去了 Steve Sanderson's howto (对于mvc1),但是可能有不同的步骤使它在mvc2中工作?

    到目前为止,我已经采取了以下步骤:

    • 删除了对基于gac的 System.Web.Mvc dll 从我所有的项目。
    • 将MVC源作为项目添加到解决方案中。
    • 在我的每个项目中添加了对system.web.mvc项目的引用。
    • 评论了 <add assembly="System.Web.Mvc... 项目中 <compilation><assemblies> 根的截面 web.config
    • 评论了 <add assembly=“系统.web.mvc… 中的项 Web.CONFIG Views 文件夹(和 意见 每个区域的文件夹)
    • 查找/替换任何引用 System.Web.Mvc, Version=2.0.0.0 替换了他们的 PublicKeyToken 用价值 null (原31bf3856ad364e35)

    所以,问题是:

    • 还有其他人在工作吗?(大概是的!)
    • 在哪 公钥令牌 错误中的数字?
    • 还有其他的参考资料 公钥令牌 (31bf3856ad364e35)对于 Web.CONFIG (例如) System.Web.Extensions )这有关系吗?
    • 知道我做错了什么吗?!我错过了几步?

    谢谢您!

    更新: 在回答赛义德的问题时,这里有一些额外的信息:

    1)web.config中的当前程序集节点:

    <compilation debug="true">
        <assemblies>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
            <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        </assemblies>
    </compilation>
    

    2)是的,我正在使用MVC Futures,但是我的解决方案中也内置了该项目,并引用它在解决方案中使用system.web.mvc。

    3)我使用了一些非标准的参考资料。更确切地说,我将在这里列出它们:

    Autofac
    Autofac.Integration.Web
    Autofac.Integration.Web.Mvc
    Elmah
    FluentValidation
    FluentValidation.Mvc
    log4net
    MvcContrib
    MySql.Data
    NHibernate
    MvcFutures
    
    2 回复  |  直到 14 年前
        1
  •  3
  •   Darin Dimitrov    14 年前

    您不需要下载源代码或从gac中删除引用。只需按照中描述的步骤 this blog post .

    • 取消选中:仅启用我的代码(仅受管理)
    • 检查:启用源服务器支持
    • 添加符号服务器:在VS2010中,您只需要检查 Microsoft Symbols Servers ,不需要输入url,在vs2008中需要输入url

    创建一个新的ASP.NET MVC应用程序,在控制器操作中放置一个断点,当断点被击中时,加载 System.Web.Mvc 调用堆栈中的程序集,加载符号后,您将能够单步执行源代码(在接受条款和条件之后)。

        2
  •  1
  •   Syd    14 年前

    而不是评论 <assemblies><add assembly> 第行,您应该改为设置publickeytoken=null。