簡體   English   中英

如何部署提供Powershell命令的Nuget包,如EF的Scaffold-DbContext?

[英]How to deploy a Nuget package that provides a Powershell command like EF's Scaffold-DbContext?

假設我正在編寫一個為.NET項目生成文件的自動化腳本 (因為.NET Core項目不再支持T4) 現在我想使用Nuget部署它,所以我可以使用類似於Entity Framework的Scaffold-DbContext 我使用Console App編寫的項目,但如果需要,我可以輕松地將其轉移到其他類型。

我試着查看Entity Framework的源代碼,看看他們正在打包一個init.ps1文件,以便添加命令,實現就在這里

對不起,但這是我可以去的。 有沒有關於如何做到這一點的文件? 或者,如果可能,請告訴我我的情況,如果我想運行此命令,如何調用我的.NET Core項目?

Scaffold-ViewModels -Input Models\\Entities -Output Models\\ViewModels

編輯:經過進一步調查,我看到EF正在打包他們的文件夾中已編譯的二進制文件:

  <files>
    <file src="lib\**\*" target="lib/" />
    <file src="tools\**\*" target="tools/"/>
    <file src="$targetDir$*.psd1" target="tools/"/>
    <file src="../ef/bin/$configuration$/net461/ef.exe" target="tools/net461/any/" />

他們的腳本正在執行帶有其他參數的ef.exe 我的問題是:關於它的任何文件? 有什么參數? (就像在他們的腳本中,它們包括$env等)。

如果可能的話,我們將非常感謝Hello World創建自動化腳本的教程/入門。

如果我理解你,你想要實現這個用例:

“在nuget包安裝上,我想啟動一個解析項目源和包裝新生成文件的ps腳本”?

您無法以這種方式模擬TT腳本傳送,因為TT已經作為VS擴展安裝(並且已集成到VS)。

通過NUGET傳送TT腳本很簡單,因為在安裝時只需要將tt文件放到項目文件夾中。

對於高級方案,您需要自定義dotnet工具命令https://docs.microsoft.com/en-us/dotnet/core/tools/extensibility或VS Extension或兩者。

上次我使用它(幾年前), init.ps1文件只是一個powershell腳本,在安裝包時在項目上下文的visual studio中運行。 我假設EF很復雜,需要二進制文件,但您可以使用所有常規的PowerShell cmdlet來操作項目:

想想New-ItemCopy-ItemGet-ChildItemTest-PathAdd-Content等。

有關更多命令,請查看https://docs.microsoft.com/en-gb/powershell/module/Microsoft.PowerShell.Management/?view=powershell-6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM