ASP.NET MVC - ASP.NET MVC vNext ( MVC 6 ) 使用Source Code

20 June 2014 — Written by Sky Chang
#ASP.NET MVC#Git#KVM#Visual Studio

經過前面兩回的亂玩XDD,而這回我們要體驗的東西,則是之前很難處理的"使用Source Code”…( 其實目前也沒好到哪去,但至少方便多了… )

很難處理!?是的,雖然MVC 5之前的Source Code都公開了,但要拿Source Code進行偵錯老實說真的還是很麻煩…而這一次的其中一個變革,除了ASP.NET的相關專案都放到Github公開Source Code外,MVC 6本身更提供了開啟關閉使用Source Code的偵錯功能!!

當然,前提之下,我們還是要先下載Source Code…這邊我們進入ASP.NET MVC的Github網站,另外,下圖的左邊( 小弟我忘記紅色框框了QQ.. )有一個branch : dev ,這代表的是分支的版本,也要選到對應的版本;然後小弟是使用Clone in Desktop來下載,但使用這個必須裝Github for Windows這套軟體。 ( 可以參考小弟的舊文 ) 如果看完文章,覺得麻煩,也可以直接Download ZIP。

image

當按下Clone in Desktop後,IE會呼叫Github for windows來處理。

image

下載完成後,我們可以從下圖的位置,得到Source Code放在哪邊..

image

以下是MVC的Source。

image

接下來,我們要在方案的目錄下,增加NuGet.Config檔案,這個檔案的目的,只要是設定現在MVC的NuGet位置;為什麼要這樣做呢??其實很簡單…因為目前官方的NuGet路徑,主要還是放比較穩定的版本,而現在如飛一樣的速度版本則是放在myget上面,而我們用github抓下來的一定是最新版本,但是這最新版本會需要很多同樣是最新版本的mvc lib,所以我們要設定myget路徑,讓NuGet自動透過myget路徑去取得最新的mvc lib。

image

主要是下面這一行,myget是第三方幫忙託管NuGet Package的雲端服務…目前MS把MVC開發中的Lib放在myget上。

image

完整的xml如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/" />
    <add key="NuGet.org" value="https://nuget.org/api/v2/" />
  </packageSources>
  <packageSourceCredentials>
    <AspNetVNext>
      <add key="Username" value="aspnetreadonly" />
      <add key="ClearTextPassword" value="4d8a2d9c-7b80-4162-9978-47e918c9658c" />
    </AspNetVNext>
  </packageSourceCredentials>
</configuration>

接下來,我們要再方案的地方,增加一個global的資料夾。

image

並且在此資料夾加入一個global.json的檔案

image

如下圖。

image

接下來,我們編寫一下json,如下圖…...使用sources來指定source code的路徑。

image

然後過一陣子後,就會看到檔案載入了…

image

如下圖,我們可以看到,Visual Studio “14”自動的參考到Source Code的專案,而其他沒參考到的就還是package;而且我們可以發現,也自動的下載更新版的package。

imageimage

接下來,我們在ASP.NET MVC的Source Code裡面的ViewResult檔案裡面加入一個輸出Hello World,並且設定中斷點後執行。

執行後就可以發現,中斷點很有效地停在那邊了。

image

而實際輸出,也真的出現Hello World了!!

image

是的,這樣就可以了!!!,很簡單嗎!?,不,一點也不,現階段要使用這功能,會遇到踩不完的雷…理由很簡單…現在Github上面提供的是dev的分支,簡單的說,還沒有規劃出里程碑的分支,而dev的分支則大概幾小時就會有更新,並且出現新的版號…換言之…我們要讓所有MVC有用到的Lib,都吃到相對應的版號,才能讓功能正確的運作…

而這次小弟就遇到不少類似的坑,光是要湊集神之卡所有的版號,就搞掉我一天的時間了… ( 又不是收集七龍珠… )

而且不只MVC要用到的Lib…連KVM的版號也會有關… ( 畢竟這次的底層是用KVM ),除此之外,VS的版本又和KVM有關…所以現階段要成功,還真的要碰點運氣…

但相信未來正式版出來後,這種問題就可以迎刃而解了…

最後,官方這次有提到,會提供這功能的原因有幾個,一方面是提供Source Code給我們偵錯使用,其次,利用此功能,如果我們發現原本官方的Bug,我們也可以先自行改Source Code的方式撐著用… ( 抖抖…完全不想阿- - ),那等官方出新版的時候,再把專案移除,改用Nuget抓下來的package即可…當然,未來怎樣發展,還是要等到明年才知道嚕!!

Sky & Study4.TW