2012-01-28 60 views
1

NuGet的PM控制檯非常棒,除了你必須在Visual Studio中才能使用它。我之前沒有任何疑問就問過這個問題,我很難相信沒有關於這個主題的文件。如何從powershell.exe t4腳手架?

我有兩個用戶:用戶A賣鞋子,用戶B賣汽車。每個都有不同的財產需求。 如果我允許他們在其中寫入所需的屬性/數據類型到其各自的Product.cs實體,我如何使用PowerShell.exe來:

腳手架控制器,視圖,dbcontext和存儲庫?

我知道我以後可以做一個MSBuild,但是它怎麼會沒有辦法使用PowerShell從一個bat文件做VS 2010之外的腳手架?

任何有識之士將不勝感激。

回答

0

在試圖從powershell運行它,你在幾乎踩踏的領土,但它的可想而知。

我認爲T4模板是由外部工具呈現的。我看不出有什麼理由不能從powershell中調用這個EXE,並在要調用的t4模板的命令行上傳遞參數。生成的文件(或多個文件,請參閱實體框架T4關於如何編寫多個文件的示例)將在完成時由t4轉換工具輸出。

您的各種不同的文件類型將由不同的t4模板,Controller.t4,Views.t4,Dbcontext.t4和respositories.t4處理。

希望有幫助

+0

我f在沒有運氣的日子之後,最終想到了這一點。 – aaa 2012-01-31 18:11:27

2

我終於在沒有運氣的日子後算出來了。首先,不要使用任何Microsoft測試版,包括Windows 8開發版,PowerShell 3.0和VS 2011.一旦PowerShell 2.0啓動並運行:

1.在PS/v1.0文件夾中添加powershell .exe.config文件與:

請點擊此鏈接的腳本:http://connect.microsoft.com/PowerShell/feedback/details/525435/net-4-0-assemblies-and-powershell-v2

重啓PowerShell 2.0和它現在將支持4.0框架。

2.執行策略設置爲只需要遠程腳本是符號:

命令行:設置ExecutionPolicy RemoteSigned就是

3.導入所需的自定義T4架子工(所以你可以使用T4支架):

命令行:導入模塊C:\用戶\管理\文檔\ 「的Visual Studio 2010」 \項目\ MvcApplication1 \包\ T4Scaffolding.1.0.5 \工具\ T4Scaffolding.NuGetServices.dll

命令行:導入模塊C:\用戶\管理\文檔\ 「的Visual Studio 2010」 \項目\ MvcApplication1 \包\ T4Scaffolding.1.0.5 \ TOOLS \ T4Scaffolding.dll

4。現在,調用你的PowerShell文件:

命令行:C:\用戶\管理\文檔\ 「的Visual Studio 2010」 \項目\ MvcApplication1 \ MvcApplication1 \ CodeTemplates \架子工\ StevceScaffolders.AjaxGrid \ StevceScaffolders.AjaxGrid.ps1

(一定要引用有空格的文件夾,例如「Visual Studio 2010的」

我當然認爲它會更好,如果MS的文檔中提供了這方面的一些見解。

+0

「首先,不要使用任何Microsoft測試版」 - 這是合理的建議:)我只在VM中運行測試版,因爲它們的卸載程序很少工作,並且通常沒有升級到真正發行版的路徑。此外,發佈您的解決方案+1。當我們在CodePlex上投擲項目時,我覺得MS在「讓我們假裝這是一個糟糕的記錄在一起的開源項目中」。你幾乎可以分辨出NuGet是否是一個MS項目,或者是某人只是把它扔到一起,或者它的社區被驅動,或者是...... – CodingWithSpike 2012-01-31 18:28:48