2010-06-27 63 views
1

我一直在試圖設置ASP.NET MVC 2 RTM Source用於我的應用程序,所以我可以在調試時通過模型綁定等步驟。但是,我一直沒能得到它的工作 - 我得到這樣的錯誤:步進ASP.NET MVC 2源碼

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中工作?

步驟我已經採取了迄今:基於所有我的項目的System.Web.Mvc dll到GAC

  • 刪除引用。
  • 在解決方案中添加了作爲項目的MVC源代碼。
  • 在我的每個項目中添加了對System.Web.Mvc項目的引用。
  • 在根web.config
  • Views文件夾中的web.config的部分評論出<add assembly="System.Web.Mvc...項目(和每個區域的Views文件夾)的<compilation><assemblies>部評論出<add assembly="System.Web.Mvc...
  • 查找/替換任何引用到System.Web.Mvc, Version=2.0.0.0null取代他們的PublicKeyToken值(是31bf3856ad364e35)

所以,問題s:

  • 有沒有其他人能工作? (大概是的!)
  • PublicKeyToken數字來自哪裏的錯誤?
  • web.config中的其他dll(例如System.Web.Extensions)還有其他一些其他參考文獻PublicKeyToken(31bf3856ad364e35)是否與此相關?
  • 任何想法我做錯了什麼?!我錯過的步驟?

謝謝!

UPDATE: 針對西德妮的問題,這裏的一些額外的信息:

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期貨,但是我的解決方案中也包含該項目,並且已經引用它來在解決方案中使用System.Web.Mvc。

3)我正在使用一些非標準的參考。相反,一個截圖我會在這裏一一列舉:

Autofac 
Autofac.Integration.Web 
Autofac.Integration.Web.Mvc 
Elmah 
FluentValidation 
FluentValidation.Mvc 
log4net 
MvcContrib 
MySql.Data 
NHibernate 
MvcFutures 

回答

1

註釋掉<assemblies><add assembly>線相反的,你應該設置公鑰= null替代。

+0

好的,只是嘗試過這一點,仍然有我害怕同樣的錯誤。 – UpTheCreek 2010-06-27 10:15:06

+0

更多問題。 1)你可以在「程序集」節點中列出你的修改過的行嗎? 2)你可以在你的項目中進行參考的屏幕截圖嗎? 3)你還使用MVC未來? – Syd 2010-06-27 11:10:13

+0

謝謝,我用您請求的信息更新了問題: – UpTheCreek 2010-06-28 08:28:07

3

您無需下載源代碼或從GAC中刪除引用。只需按照this blog post中描述的步驟操作即可。

  • 取消選中:啓用僅我的代碼(僅託管)
  • 檢查:啓用源服務器支持
  • 添加符號服務器:在VS2010,你只需要檢查Microsoft Symbols Servers,無需輸入網址,在VS2008您需要輸入網址

創建一個新的ASP.NET MVC應用程序,將斷點在你的控制器動作,當斷點被擊中,加載符號從調用堆棧中的System.Web.Mvc組裝,一旦符號被加載,你將成爲abl e接受源代碼(在接受條款和條件後)。

+0

是的,我寧願這樣做,但我目前的嚴厲的網絡設置意味着永遠的源服務器不是一個選項。這可能是我最終必須走的路,儘管如果我無法獲得源代碼的工作。 – UpTheCreek 2010-06-27 10:21:39

+0

在當然以前的評論中表示'外部',而不是'永恆') – UpTheCreek 2010-06-28 08:28:55