2013年1月4日

ASP.NET MVC - Area出現指定的組件名稱或程式碼庫無效之問題

這算是除錯短篇三部曲的最後一部XDD,不知道為什麼,最近都在處理這些奇奇怪怪的問題;這篇也是短短的一篇解決文章,起因也是朋友問我ASP.NET MVC Area的Url的一些問題,本來想很帥氣的,迅速地寫一篇範例來展現自己 ( 疑!? ),但後來卻發現另外一個問題…Orz…

要還原這個事件,其實很簡單,只要安裝完Visual Studio 2012 Update 1後,隨便打開一個ASP.NET MVC的專案,然後加一個Area,並且隨便設定設定Controller和View;最後打開瀏覽器,就會出現以下畫面…

建立 system.web.webPages.razor/host 的組態區段處理常式時發生錯誤: 指定的組件名稱或程式碼庫無效。 (發生例外狀況於 HRESULT: 0x80131047)

image

好,反正看到錯誤訊息後,大概就知道,是版本的問題了,所以打開view底下的Web.config來看看,位置如下圖。 ( 記住,是Area底下的View底下的Web.config )

image

打開如下,小弟我這邊只擷取段落,大家應該可以明顯地看到,Version後面接的像是變數的東西。( __WebPagesVersion__.0.0 這個字眼 )。

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" 
                  type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, 
                  System.Web.WebPages.Razor, Version=__WebPagesVersion__.0.0, 
                  Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, 
               System.Web.WebPages.Razor, Version=__WebPagesVersion__.0.0, 
               Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, 
               System.Web.WebPages.Razor, Version=__WebPagesVersion__.0.0, 
               Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

我想當初的好意,應該是為了讓Area的樣板可以無關於組件的版本,所以才這樣設計,但不知道為什麼,反而錯在這邊…,所以我們可以做調整,假設我們先調整Razor這個組件,改成特定的版本看看。( 改成Version=2.0.0.0 ),如下。

  <configSections>
    <sectionGroup name="system.web.webPages.razor" 
                  type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, 
                  System.Web.WebPages.Razor, Version=2.0.0.0, 
                  Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, 
               System.Web.WebPages.Razor, Version=__WebPagesVersion__.0.0, 
               Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, 
               System.Web.WebPages.Razor, Version=__WebPagesVersion__.0.0, 
               Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

結果就會如同下圖,恩,至少剛剛改的2.0.0.0那個有用了XDDD

image

既然確定了原因,那要怎樣做?,其實很簡單,我們其實可以直接把預設View底下的Web.config拷貝到Area底下的View底下的Web.config就可以了;如下圖,把"根"下的Views目錄,底下的Web.config裡面的內容,複製一份,貼到Test( 這是個Area )底下的Views目錄下的Web.config就可以了。

image

在一次執行,就可以了。( 恩…下圖不是缺圖,是因為我沒在View裡面寫任何文字XDD,所以輸出的View就是一片空白… )

image

大致上就這樣,這部分,未來官方應該會修正,有碰到錯誤的朋友,可以暫時先忍痛一下QQ..

參考網址

SignalR - 無法與伺服器建立連線

SignalR是個很棒的東西,雖然目前也還沒正式版,但小弟已經拿來做了多次的實驗,並且也實際拿出來應用過,而今天,主要是紀錄一下之前發生的一個小問題。

這個問題主要是這樣,基本上,寫法和呼叫等等都是正確的,但是卻發生無法連線的錯誤,如下圖。

無法與伺服器 建立連線

image

先說解法,其實很簡單,我們只要在web.config裡面的httpRuntime這個tag加上targetFramework=”4.5”就可以了,如下。 ( 以下是web.config的片段 )

 <system.web>
    <customErrors mode="Off"/>
    <httpRuntime targetFramework="4.5" />
    <compilation debug="true" targetFramework="4.5" />
    <pages>
      <namespaces>

這樣就不會產生錯誤了…

image

當然,因為近期一直都很忙,所以沒有實際的追進去看原因,但小弟猜測,因該是SignalR預設使用到了.NET 4.5的SOCKET機制,但web.config沒有特別指定版本而造成的錯誤;不過這也只是小弟的猜測,看看未來有沒有空,再來鑽進去看看;總之,先在這邊紀錄一下吧。

TFS - 使用NuGet套件還原功能,卻不會自動下載

最近大概是小弟推廣Team Foundation Service搭配NuGet,推廣得太有力,所以一堆人問了小弟這個問題,所以在這邊紀錄一下。

這個問題主要是使用Team Foundation Service取得版本控制的方案,而這個方案有使用NuGet的"啟用Nuget套件還原"功能,所以並不會把一些dll丟到版本控制裡面,並且透過NuGet,讓Build的時候,自動下載;但有的時候,下載下來的專案,就是會建置失敗,出現以下訊息。

Package restore is disabled by default.

這個表示,預設的情況下Package復原是關閉的,那表示很有可能該勾選的地方沒勾選到。如下。

image

這邊要勾選"允許NuGet在建置期間下載遺漏的套件"。

image

通常勾選後,就可以正常Build了,因為這個問題,滿多人問的,所以就在這邊紀錄一下。

2013年1月3日

Win Phone - 使用Mac開發Win Phone 8應用程式

雖然這篇寫著,如何使用Mac開發Win Phone 8應用程式,但可不代表小弟準備跨領域喔XDD,因為手上剛好有MacBook Pro,而且又聽到人家說,目前已經可以裝了,所以純粹只是想來安裝看看而已…

另外,話先說在前頭,真的想開發的人,請先直接移到這篇最底下,看一下後記,在認真地考慮一下,要不要繼續吧XDD。

這次的Win Phone 8 SDK因為有使用到Hyper-V來當作Win Phone 8的模擬器環境,所以剛推出的時候,小弟的Macbook Pro想當然,就是不能安裝,畢竟Hyper-V根本就跑步起來阿…,所以一開始的選擇,第一,只能使用Bootcamp;但小弟不是很喜歡Bootcamp。因為小弟已經用習慣Parallels來模擬Win 8了;第二個選擇就是使用VMWare來模擬,但是小弟都已經付錢給Parallels了,為了要開發Win Phone 8,還要再付錢,實在是付不下去… ( 其實是因為小弟本身就沒再玩Win Phone 8 Orz… );但後來還好,經過一段時間後,Parallels終於支援Hyper-V了;當然,前提之下,你的Macbook Pro也必須是新一點的CPU,才有支援VT,不然還是依樣啟動不起來的…接下來,我們就來看看怎樣設定Parallels… ( 其實現在有也官方也有中文教學了… )

首先,我們要去Parallels進行設定,如下,Nested VT記得打勾啟用;而目前Parallels官方也建議,如果要開發Win Phone 8,建議把Parallels設為一個CPU,目前兩個CPU以上似乎會出問題,未來會再修正此問題;此外,用Parallels模擬出來的Win8記憶體最好是大於2G,小弟自己是使用到4G啦…最近也深感不夠用的感覺QQ…

螢幕快照 2013-01-02 下午9.50.44

設定完成後,就可以順利進入Win 8,並且到下面這個網址下載Win Phone 8 SDK

http://www.microsoft.com/zh-tw/download/details.aspx?id=35471

如下,雖然看起來只有小小的1.0MB,但實際執行下去,就會去網路上邊裝邊下載= =+。

image

接下來,就可以開始安裝!!,留一下畫面,當作紀念…

image

經過漫長的等待 ( 真的很漫長,我都寫好另外兩篇喇賽文了= = ),終於安裝完成了,也可以看到,Hyper-V已經開啟,這時候就需要重新啟動一下,然後又會開始進入超級漫長的等待…

image

完成之後,我們要設定一下Hyper-V。

image

打開後,就可以發現,安裝玩Win Phone 8 SDK,預設就會幫我們準備好Win Phone 8的模擬器,接下來,我們要設定模擬器的CPU數。

image

預設是兩個CPU,根據Paralles官方的建議,如果這台win 8 OS的cpu數,只有給一個CPU,那下圖的位置,虛擬處理器數目的數量,就要改成1,但如果WIN 8 OS的CPU數目,超過1,那用預設的就可以了,以下是官方的敘述 :

如果您不按照以上建議設定 Windows 使用 1 個 CPU,則不要在 Hyper-V 虛擬機中更改處理器數量。

修改位置如下圖。

image

這樣就設定完成了,我們就可以用MAC搭配上Parallels來開發Win Phone 8了。

( 小弟還特別抓了mac下運作的畫面來證明喔!! )

螢幕快照 2013-01-03 下午1.15.18

這樣就完成嚕!!

後記

講是這樣講,但整個開起來的速度,因該會讓人瘋掉,所以真的想寫Win Phone 8的朋友們,還是不要這樣搞吧XDD,遠端桌面一台機器,應該都快很多…

參考資料

2013年1月2日

Windows App 開發嘉年華!制霸!

去年年底,最大的盛事,除了讓人失望的芥末日和歡喜的跨年外,大概就是這場熬夜熬到死,吃東西吃到撐死,除Bug除到煩死但卻High到翻天的36hr不斷電,不眠不休的Windows App 開發嘉年華的活動了;當然,小弟也有幸的,充當著年輕小伙子,跑去吃吃喝喝,喔,不是,去開發Windows App…當然,一堆人丟臉,比只有一個人丟臉來的好…Orz…所以也順便拖好朋友TerryShadow下水XDD…

當天將近300位高手,本來想好好地拍拍照,但畢竟當天是去Coding的,不是去玩樂的 ( 不想被某人扁 ),所以還是認真的去參加比賽XDD;不過事實證明,就算認真,也打不過其他高手…Orz… ( 早知道還是去吃吃喝喝好了= =… )

第一天早上,主要在設定一些東西,我們隊選了一個食物區前面的位置,當然,不為了甚麼,就是要搶得到食物!!

而一直到晚上前,其實也沒有多大的變化,我們隊友反正就是拼命寫Code…只是我比較不一樣,我竟然一整天都在搞設計QQ…看著別組有專門的設計人員,而我竟然在搞設計QQ…我是Developer耶!!

結果兩天的循環,就是設計、XAML、Code、JavaScrip、HTML、設計…無止境的循環…而Terry哥處理著人生第一次的圖片設計 ( 結果到比賽結束,Terry哥依舊脫離不了圖片的魔手,無論是設計、寫Code都和圖片有關XDD ),而Shadow則幫忙處理地圖定位,錄音,和整個系統整合。

到了第一天晚上,大概撐不下去的就撐不下去了,繼續努力的人,還是繼續努力,雖然當天外面下著雨,不過裡面還好,不會很寒冷,而且燈火通明,所以( 讓人想睡也睡不著!? )讓人會很想努力的寫Code!! ( 到了凌晨,我終於寫到C#….脫離萬惡的Blend… )

IMG_1357IMG_1358

小弟也利用am 4:00左右,到處走走晃晃,稍微休息一下 ( 而且好像也是這個時間點,被記者大哥偷拍…結果上了報= =,當然,上報是沒差,但可不可以不要拍到我禿頭!! (翻) );然後消夜是統一肉燥麵;但其實比較想吃雜醬麵說…這時候也發現,幾乎每個隊伍,都有帶設計人員,這時我是否應該很自豪地說,我就是設計人員呢!?

IMG_1360IMG_1361

第二天早上,是豐富的早餐,但當時,我已經不行了…只能看著隊友,吃吃喝喝…不過還是有喝一大杯豆漿…XDD

IMG_1363IMG_1362

第二天開始,大家就準備著最後衝刺!!,當然,這時候小弟又抽空跑出來溜搭一下,如下圖,大家可以發現,其實人真的不少,而且大家的作品幾乎都差不多了,甚至有3D的遊戲,超高的創意,還有很多高手QQ…

IMG_1364

而最後,在台上測試機器的時候,又順便偷拍一張,畢竟站上台上的機會也不多,趕快偷拍一下;而右下角,是我們這次的編號,也由此可以證明,非常吉利的數字,也不一定能帶來勝利XDD,平常的磨練還是最重要的…

IMG_1366IMG_1368

最後,上台開始Demo,結果整個過程哩哩拉拉= =…這塊就不想提了 ( 泣 );但從最後的結果來看,就算2min沒講完,其實只要讓評審覺得不錯,還是可以得獎的;我們反而太注意時間,再加上台上一些無聊的梗,反而造成大失敗… ( 雖然,好好報告,也不會成功到哪裡去= =… ),而這次也碰到很多業界的同伴來參加,所以在開發上,也不會那麼的無聊寂寞了XDD ( 雖然大家都是埋頭苦幹 ),但不管怎樣,也因為有這個活動,才讓小弟有機會去接觸到Windows 8的開發,在某個意義上,也算不錯啦…

最後的感想,相信這個活動一定也還有很多需要改進的地方,畢竟那麼大型的開發活動,這應該也是第一次舉辦,所以相信未來一定會更好;而這次也很感謝Eric哥的活動邀約,我們學到的東西,也非常的多;也希望這次沒有參加道的朋友,下次可以組隊來玩玩看;當然,能拿到冠軍是很不錯,但這中間的過程,絕對就像海賊王的航海一樣,收穫覺得會比你想像的多喔!!也很謝謝被我拖下水的夥伴喔!!~

結論…人果然是需要被激,才會引發出潛能的…

( 話說,比完後,我幾乎整整睡了兩天啊!!~~~我的跨年假!! )

再見了2012 and 賀!突破十萬人大關

好啦…其實我相信,十萬人有多半都是我自己上來看我自己的筆記,還有一些問我問題,就順手丟過去網址的流量XDDD,但不管怎樣,既然都突破十萬人大關,再加上今年大家都順利度過芥末日,跨完2012年到2013年 and 好久沒寫碎碎念了,就順便慶祝一下吧XDDD

原本今年也表定,要每月寫至少十篇文章 ( 包含喇賽文 ),但現實上,還是有十分的困難阿XDD,尤其到年末,剛好有去參加Win App大賽 ( 其實是陪考團… ),所以12月文章數量遽減,只有短短的兩篇;但是還好,該筆記的還是有隨手筆記下來,未來1月再給他補一下;不過話說回來,每月十篇文章,還真的是有難度,但無論有無做到或達成,其實自己收益也滿多的,尤其快要老年癡呆的我,把看完的東西,弄成只有我自己看得懂的筆記 ( 疑!? ),當要回憶起來的時候還滿快的,而且如果剛好有路人碰到相同問題,也剛好看到這篇 ( 又剛好看得懂的話XDD ),也順手幫助到一個人…當然,前提之下,是寫的文章沒有錯誤…Orz…

最近隨著文章越來越多,越來越多朋友來看,有時相信大家也會有一些疑惑或是問題,基本上,小弟看到,都會盡量幫忙解答,但畢竟不是24HR掛在Blog上,所以有時候也是會有一些時差=v=;另外,有時候,一些艱難的問題XDDD,小弟也真的沒轍了QQ,此外,有時雖然看到問題,但是時間上,還沒空可以仔細看,幫忙解決,這部分也請大家多多見諒,畢竟小弟還是小小咖XDD,如果問題真的很急,也可以多利用Google,或是MSDN,裡面有很多的神人前輩,會幫忙解決的~~,如果真的是那種公司客戶超級麻煩問題,很棘手,如果公司願意,就砸錢問Microsoft裡面的技術人員吧… ( 不過我想,通常公司是不會願意付這個錢的QQ ),總之,對於問題沒辦法即時答覆,或是不知如何解決,也請各位朋友前輩們,多多見諒了QQ。

現在的技術變化很快,原本是打算,Blog的文章會進行更新,以更上時代,後來發現,現在的技術,就像是在打on-line Game一樣,每月一小改,每季一大改;每天我們光是衝副本,打寶寫攻略就來不及了…所以到現在,實在很難做到文章都是最新的境界;其次,每次改,畫面也給我大幅度變更,所以,請大家多見諒阿QQ;說到這個…改變速度最快的就是Azure了吧…不虧是雲端服務阿…

最後,還是很感謝業界朋友一路上的支持與鼓勵,收到很多朋友留言鼓勵與說讚!,都是小弟繼續撰寫文章的原動力,也希望新的一年,大家都萬事如意,bug少少。

新年快樂~~

Sky.