2016-03-01 82 views
1

這必須是如此簡單的事情我真的很沮喪,我無法找到它發生的地方。如何重新運行帶有t4擴展名而不是t4的t4模板

我剛安裝的EntityFramework 6.1.3以及EntityFramework.CodeTemplates.CSharp6.1.3

我想修改模板並運行它們,所以我首先單擊生成菜單上的Transfor All T4 Templates,然後右鍵單擊Context.cs.t4和EntityType.cs.t4模板,但選項「運行自定義工具「無處可查。

我看着文件的屬性,並試圖只要我做,我得到這些編譯錯誤的設置這兩個文件爲‘TextTemplatingFileGenerator’和‘自定義工具’屬性:

編譯轉型:元數據文件'EntityFramework'找不到 。
編譯轉換:元數據文件 無法找到'Microsoft.Data.Entity.Design'。

在那我從this site安裝它提到,反向工程過程可以再次運行模板後,但爲了做到這一點顯然是繼EF樣品我會刪除所有已在CS文件之前創建。這真的有必要嗎?

我最終的目標是修改事物,以便在一個單獨的項目中創建實體,但我發現的所有解決方案顯然都談論執行t4模板,這是我無法做到的。

謝謝你的幫助。

+0

它應該是'.tt'至少在VS2013。 '.t4'不是已知的文件擴展名。嘗試將擴展名從'.t4'重命名爲'.tt'。它應該給你選擇運行模板。 – vendettamit

+0

@vendettamit - 我忘記提及這個問題。我已經嘗試過了,並得到了與上述完全相同的編譯錯誤。我的VS版本是2013更新5 –

回答

1

因爲通過nugets安裝的默認模板不知道實體框架的IDE工具,所以出現錯誤。所以,你只需要改變在Context.cs.tt以下標頭值:

<#@ assembly name="Microsoft.Data.Entity.Design" #> 
<#@ assembly name="EntityFramework" #> 

到:

<#@ assembly name="%VS120COMNTOOLS%..\IDE\EntityFramework.dll" #> 
<#@ assembly name="%VS120COMNTOOLS%..\IDE\Microsoft.Data.Entity.Design.dll" #> 

現在你會得到合法的錯誤參數模型爲null。

更新

你錯過從你指文章的第三步。要運行Reverse Engineer code first,您需要安裝EF power tool擴展名。安裝完畢後按照步驟:

選擇項目- >右擊- >的EntityFramework 下 - >反向工程代碼第一。選擇要在其上運行自定義模板的數據庫。

這些EF6模板是參數化模板,不能簡單地通過右鍵單擊運行它們來運行定製工具。我認爲這是模板文件擴展名被重命名爲.t4的原因,因爲這些擴展名僅限於EF電源工具。

更新2

我已經修改了EFPowerTool extension支持基於命名空間的目錄結構創建。在codeplex的EF 6.x項目上創建了一個拉request。此外,我已經在GitHub上創建了一個experimental branch用於測試目的。(有一定的空間,修復/增強它可以發送更新的拉動請求之前添加和測試)

你可以建議修復從下載擴展安裝程序here。希望這會幫助你解決你的問題。

+0

好的,所以現在我得到了你提到的錯誤,但它仍然沒有解決問題,即使我現在可以更改擴展並選擇「運行自定義工具」選項,我該如何擺脫這一點,以便代碼正確執行? –

+0

現在您需要將值提供給模板中定義的參數。看看這個鏈接http://romiller.com/2012/05/09/customizing-reverse-engineer-code-first-in-the-ef-power-tools/如果有幫助。 – vendettamit

+0

@SergioRomero我已經更新了我的答案。 – vendettamit