ASP.NET MVC - ASP.NET MVC vNext ( MVC 6 ) 於MAC上跑ASP.NET MVC (後篇) Kruntime與MVC專案設定

20 June 2014 — Written by Sky Chang
#ASP.NET MVC#KVM#Mac

開始前,還是要提醒大家,目前也還有很多問題,小弟測試下來,真的感受到,要用於正式環境還有一段路要走…

後篇與前篇相比起來,因該是簡單的多,基本上就是兩件事情,第一件事情是要建立Kruntime和KVM,第二件事情則是要針對OSX上,MVC的設定。

建立Kruntime與KVM

基本上,要建立Kruntime與KVM只要下以下這個指令就可以了…

curl https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh && kvm upgrade

這個指令基本上做的事情和在Windows下安裝Kruntime和KVM是同樣的…他會做以下的事情。

  • 下載kvm.sh並且儲存在~/.kre/kvm/kvm.sh  
  • 使用kvm upgrade下載最新的KRE Package

完成之後,我們就可以使用kvm list來查看裝了哪些東西…

[![螢幕快照 2014-06-19 上午1.26.34](http://lh3.ggpht.com/-J_gJuhN91-g/U6HReb-UysI/AAAAAAAAJWQ/qa28kcSdhUo/Image.png?imgmax=800 "螢幕快照 2014-06-19 上午1.26.34")](http://lh3.ggpht.com/--YVjMN6CHlU/U6HRdkmPezI/AAAAAAAAJWI/hjBYIVOEKaY/s1600-h/Image.png)

基本上,這樣Kruntime環境與KVM就設定完成了。

設定MVC

設定MVC專案有幾個地方需要設定,一個是NuGet.config,另外一個是project.json,最後Startup.cs也是要加上useMvc;另外建議也把一些不需要的東西砍一砍,基本上留下下面這些就夠了。

而比較特別的是Nowin.vNext這個相依的專案,這是國外的高手寫的,就是為了解決OSX上的問題;請注意,當初Scott在Demo的時候,也是有加入Nowin,但實際上,Nuget裡面是找不到Nowin的… ( 未來可能會有… ) 所以現在是由網友熱情自己撰寫一個~~

那大家可能會想,我要去哪找到這個Nowin.vNext這個專案,大家可以到這邊去下載

螢幕快照 2014-06-19 上午1.28.55

NuGet.Config的設定一樣,要加上ASP.NET vNext現在的dev版本下載位置,平常的NuGet只能取得比較穩定的版本,但畢竟現在版本衝得太快(因為在開發中),所以很容易版本不同匹配不起來,所以這邊還是建議使用最新的dev版本。

螢幕快照 2014-06-19 上午1.30.18

以下是NuGet.Config的code

<?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>

另外,project.json的設定如下,要改command和加入Nowin.vNext這個相依,所以目錄下,一定要有Nowin.vNext這個專案。

螢幕快照 2014-06-19 上午1.30.23

以下是project.json的code

{
    "dependencies": {
        "Microsoft.AspNet.Mvc": "0.1-alpha-*",
        "Nowin.vNext": ""
    },
    "commands": {
        "web": "Microsoft.AspNet.Hosting --server Nowin.vNext"
    }
}

基本上Startup.cs沒甚麼改變,但現在大家應該還是不習慣vNext,所以也在這邊貼出來,提醒大家一下。

螢幕快照 2014-06-19 上午1.31.51

以下是Startup.cs的Code。

using System;
using Microsoft.AspNet.Builder;
using Microsoft.Framework.DependencyInjection;

namespace WebApplication1
{
    public class Startup
    {
        public void Configure(IBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
            app.UseServices(services =>
            {
                services.AddMvc();
            });

             app.Use(async (context, next) => 
             {
                Console.WriteLine(context.Request.Path);

                try
                {
                    await next();
                }
                catch(Exception ex)
                {
                    Console.WriteLine(ex);
                }
            });

            app.UseMvc();
        }
    }
}

然後在run之前,要先用kpm restore,在下指令之前,也別忘記,進入到專案的目錄下。

( 是專案,不是方案喔 )

螢幕快照 2014-06-19 上午1.44.51

最後,下k web這個指令,就可以run起來;而難得有OSX表現的機會,我們這次就讓safari來表現一下吧XDD

( 預設的port是8080 )

螢幕快照 2014-06-19 上午1.47.46

這樣就完成嚕,當然現階段這部分也還在開發,相信明年的這個時候,會更加的方便!!

參考資料

Sky & Study4.TW