MVC5 EF6.1.3 遇到找不到中繼資料檔 EntityFramework.dll的問題

昨天卡在一個新增ADO.NET Entity Data Model後的問題很久...
我的環境是VS2013 update 4 RC,想用MVC5 + EF6做出一個小專案。

Build失敗且產生了下列錯誤訊息:

Compiling transformation: 找不到中繼資料檔 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools..\IDE\EntityFramework.dll'

另外還有Model.tt也發生錯誤情況 打開來看發現檔案只出現一行:ErrorGeneratingOutput

網路上找資料有人反映說這是VS2013的bug...因為有個系統環境變數:%VS120COMNTOOLS% 內的值不對了。

後來我在電腦內嘗試去找這顆entityframework.dll 發現在我的路徑上是 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\entityframwork.dll

所以就把環境變數:%VS120COMNTOOLS% 修正重新開機,後來又發現不行...依然顯示這個錯誤,仔細看了訊息中的相對路徑,才發現要改成 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7 最後才成功。

這問題困擾了我一下,跟之前MVC5+EF5的使用上不同,所以若有人遇到以上問題,還是要仔細觀察一下VS2013安裝到哪個路徑上才比較準確。

model.tt 是靠C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\entityframework.dll運作的,把握這個重點就好了。

P.S.:
  1. 如果沒找到這個dll那又是另外一個問題了,若有朋友遇到這樣情況請再通知我。
  2. 失敗後不用整個移除.edmx,只要將.Context.tt, .tt檔案移除後,回到.edmx上按下右鍵 Add Code Generation Item...後,再新增EF 6.x DbContext Generator就可以了。


Cheers.
 



Deliver Project on Time 敏捷專案管理實務 - 參加心得感想

五月最後一天參加了這個班。Deliver Project on Time 敏捷專案管理實務(五月班) 

其實說真的,工作上我主要是靠寫.NET C#為生,頂多比別人多一些JavaScript、CSS之外,跟Ruby on Rails幾乎無關,會來拜見XDite大師是純粹想聽她如何每次都準時結案的心法。

沒錯,如何準時結案也是可以透過學習的。能開出這種課程就覺得很威,因為打從以coding為職以來這幾年,待過的大小公司幾乎很少有專案是可以如期完成的。不是Delay、Postpone,不然就是如期完成了後續又不斷的優化(其實是補之前早應完成的必要項目),久了似乎就覺得,PM/PO永遠都期望RD能夠有自覺能夠創造奇蹟,在面對市面上有這麼多人拿了PMP證照,有這麼多的Agile方法論,專案管理永遠是圍繞理論打轉,嘴砲滿天飛,開發的系統不完美是常態。

一整天的課程分上下兩場。上半場介紹User Story,目的是教我們如何估出一個專案到底有多少事情要做?找出隱藏角色場景的需求、切出粒度,找出最重要的事情來做,延後不重要的細節,取消天馬行空的想法(商業價值優先)。從一開始版本是最rough的功能描述,最後切出大家易懂可實作的項目。這部分不牽涉到技術實作方面,就只要Paper Work就好,但要把想要做的工作項目盡量腦力激盪寫出來。

管理專案不能再只靠嘴巴、Email、Excel來管理專案,跟coding一樣管專案也是需靠正確的工具。下半場就主打Redmine工具。優點就在於可跟上半場的UserStory 的items Mapping一起,每個item其實就是一張票,當然後續就衍生很多開票/切票的情境應用,課程內容雖不多,大概幾張大圖就結束了,但真正精隨在於講者後續開放大家發問討論才有進一步的心領神會,因為專案管理難就難再有各種不同情境,該如何量化去管理,真的就是要經驗的累積。

講者大師閱歷過各種Agile書籍,嘗試許多方法論運用在許多專案上,再針對不同專案情境或團隊成員狀況整理出實戰心法。我認為每家公司文化與團隊都不同,並不是說講者的這套能夠百分百拿來套用,我相信過一陣子他也會修正或提出更好的方法出來。只是你會發現她的核心,就是:如何系統化地在有限時間內得到最大的成果。專案有可能爆的地方就盡量抓出來,別被掩蓋住,以免後續失火損失更大。

有個Bonus最印象深刻,XDite分享她如何在七小時內贏得Facebook Hackthon 2012頭獎,真是把專案管理發揮淋漓盡致!這堂課沒讓我失望,任何人都應該多少了解如何管專案,應用在你的生活上會讓你過得更好。

------------------------------------------------------------------------------------
後續再研究:ASANA, Trello, Basecamp, Hipchat, Slack

P.S.:中餐跟下午點心真的辦得很好,有圖為證。








IE8下抓不到Hidden input POST出來的資料

今天在修BUGS發現一個很有趣的issue,就是在IE8下某個Hidden欄位的值抓不到,其實該表單有不少Hidden欄位都可以接到值,只有一個是POST不出去的。

 仔細比對CODE發現是因為Hidden被安排在內。將Hidden從內移出來就正常了。這只有在IE8下才會發生,IE9不會。

會POST不出去。

這樣才可以。

所以寫好的HTML的習慣真的很重要!

ObjectContext 執行個體已被處置,無法再使用於需要連接的作業。

今天網站POST一筆資料,發現前端完全沒動靜,追查後發現吐出這樣的訊息:

System.ObjectDisposedException: ObjectContext 執行個體已被處置,無法再使用於需要連接的作業。

查了些文章後發現是沒有Attach資料,因為平常Get Entity的過程都會習慣用上.ToList()或.ToSingleOrDefault()之類的,檢查後發現這次竟然少了,補上之後就正常擷取到資料了。



整理幾個JavaScript常用的函數


/*判斷是否為數字*/
var t1= new Boolean(true);
var t2= new Boolean(false);
var t3= new Date();
var t4= new String("999.88");
var t5= new String("999 888");

document.write(Number(t1)+ "
");
document.write(Number(t2)+ "
");
document.write(Number(t3)+ "
");
document.write(Number(t4)+ "
");
document.write(Number(t5)+ "
");
/*--result--*/
1
0
1345824400758
999.88
NaN


/*The isNaN() function is supported in all major browsers.*/
document.write(isNaN(123)+ "
");
document.write(isNaN(-1.23)+ "
");
document.write(isNaN(5-2)+ "
");
document.write(isNaN(0)+ "
");
document.write(isNaN("Hello")+ "
");
document.write(isNaN("2005/12/12")+ "
");
/*--result--*/
false
false
false
false
true
true

/*這剛好跟上面的相反,判斷為數字為True*/

document.write(isFinite(123)+ "
");
document.write(isFinite(-1.23)+ "
");
document.write(isFinite(5-2)+ "
");
document.write(isFinite(0)+ "
");
document.write(isFinite("Hello")+ "
");
document.write(isFinite("2005/12/12")+ "
");
/*--result--*/
true
true
true
true
false
false

/*快速四捨五入,但回傳為字串*/
var num = 5.56789;
document.write(num.toFixed(3)+ "
");
document.write((num.toFixed(3)+2)+ "
");
var num2 = 55.6789;
document.write(num2.toFixed(3)+ "
");
document.write((num2.toFixed(3)+2)+ "
");
/*--result--*/
5.568
5.5682
55.679
55.6792


MVC 3.0 安裝在Windows 2003 IIS 6.0 下的設定細節

雖然網路上已經有很多篇文章討論如何在IIS 6.0下安裝,可是自己在操作過程還是有點小曲折,我紀錄些小細節來提醒自己。

我這次處理的的主機是Windows2003。


/*系統需求要注意*/

/*IIS設定*/
  • ASP.NET下標籤設定.NET Framework 4.0

  • 主目錄下設定應用程式設定(ISAPI) --> 確認檔案是否存在不用勾選
  • 網路延伸服務內的 ASPNET v4.0.30319要允許

這樣應該就可以了,若還是有問題再來補說明。