ASP.NET MVC 開發心得分享 (2):與原始碼共舞

分享到噗浪!

各位應該都知道 ASP.NET MVC 已經在 2009/1/27 發佈 RC 版,各位可以從這裡下載,而 RC 版的 Release Note 也可以從這裡下載,這次的改版有許多重大更新,因此建議各位詳細閱讀 Release Note。

我們在練習開發 ASP.NET MVC 的過程中時常會遇到瓶頸,由於目前缺乏許多正式且完整的文件,且網路上的資訊散落各地、版本不一,從 Alpha, Preview 1, ..., Preview 5, Beta, 一直到 RC 大約發展了約兩年時間,可想見網路上的資訊之混亂。

所以要瞭解 ASP.NET MVC 最好的方式就是直接讓 ASP.NET MVC 原始碼跟開發中的專案放在一起,若遇到任何疑問就可以立即查詢原始碼 ( 快速鍵: F12 , Go To Definition ) 進行瞭解,我個人就是透過這種方式瞭解不少 ASP.NET MVC 內部運作的細節。

今天我就來講解如何讓 ASP.NET MVC 專案與 MVC 原始碼共舞,雖然加入專案是件簡單的事,但加入 ASP.NET MVC 原始碼專案到你的專案裡還是有些必須特別注意的事項:

  1. 下載 ASP.NET MVC RC 1 Source Code
  2. 解壓縮後將 MVC\src\SystemWebMvc 目錄複製到你的方案目錄下
    解壓縮後將 MVC\src\SystemWebMvc 目錄複製到你的方案目錄下
  3. 在 Visual Studio 方案中加入現有專案:System.Web.Mvc.csproj
    Add Existing Project from Visual Studio
    Add Existing Project
  4. 移除現有 MVC 專案的 System.Web.Mvc 組件參考
    移除現有 MVC 專案的 System.Web.Mvc 組件參考
  5. 在現有 MVC 專案的 References 中將 System.Web.Mvc 專案加入參考
    將 System.Web.Mvc 專案加入參考
  6. 開啟專案根目錄下的 web.config 設定檔,並找到 <system.web> –> <compilation> –> <assemblies> 將 System.Web.Mvc 組件那一行註解起來。
    開啟專案根目錄下的 web.config 設定檔,並找到 <system.web> –> <compilation> –> <assemblies> 將 System.Web.Mvc 組件那一行註解起來 
  7. 開啟專案 View 目錄下的 web.config 設定檔,將 <system.web> –> <pages> 的 pageParserFilterType 屬性修改成:
    System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc,
    Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
    開啟專案 View 目錄下的 web.config 設定檔,將 <system.web> –> <pages> 的 pageParserFilterType 屬性修改成 System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc,Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
    如果不這樣改,若要在 View 裡面使用強型別的 Model 物件就會編譯錯誤。
    註:在 View 裡面使用 Model 強型別這特色是從 RC 版才開始有的。

---

上述步驟就屬第 7 步驟花我最多時間研究,但最後終於找出成功與原始碼共舞的方法了,請享用!

---

這種與原始碼一起運作的方式僅建議用在開發研究時使用,若未來要將專案部署到正式機時,記得將步驟還原後重新建置一次,否則你就必須要將自行建置的 System.Web.Mvc.dll 組件一併部署到正式機,不過我不建議用這種作法,除非你有修改 System.Web.Mvc 專案的原始碼 (當然也不建議這麼做)。

相關連結

  

此文章由 will 發表於 2009/2/8 下午 01:37:31

永久連結 | 評論 (3) | 此文章的RSSRSS comment feed |

分類: ASP.NET MVC

標籤:

評論

六月 15. 2009 09:01

will

補充說明:
※ 如果在整個方案中有多個專案同時會參考 System.Web.Mvc 組件,必須將所有相關專案都修改參考 SystemWebMvc 專案,否則一樣會編譯失敗或發生組件版本不一致的情況。

will 台灣

八月 31. 2010 10:31

chiyuan

保哥您好:
最近有添購您的書

順便下載原始碼看了一下
想請問一下

====================================

ASP.NET MVC 2

namespace System.Web.Mvc
{
    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Diagnostics.CodeAnalysis;
    using System.Linq;
    using System.Reflection;
    using System.Web.Mvc.Resources;

    //省略
}

跟一般我們開發ASP.NET

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace test{
   //省略
}


有不同?
還是說兩種寫法都可以
先寫namespace 或 using 都是相同效果?

謝謝

chiyuan 台灣

九月 1. 2010 00:19

Will 保哥

chiyuan: 應該是一樣的效果,這就是一種撰寫 using 的 style 而已。^_^

你可以參考這篇文章: Back to Basics - Do namespace using directives affect Assembly Loading?

www.hanselman.com/.../...ffectAssemblyLoading.aspx

Will 保哥 台灣

新增評論


( 您輸入的Email不會顯示於網站上 )

  Country flag

biuquote
  • 評論
  • 線上預覽
Loading