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



>假设我正在编写一个为 .NET 项目生成文件的自动化脚本

(因为 .NET Core 项目中不再支持 T4(。现在我想使用 Nuget 部署它,以便我可以使用类似于实体框架的Scaffold-DbContext的命令。我使用控制台应用程序编写的项目,但如果需要,我可以轻松地将其转换为其他类型。

我尝试查看实体框架的源代码,看到它们正在打包一个init.ps1文件以添加命令,实现在此处。

对不起,但这是我能做到的。是否有有关如何执行此操作的文档?或者,如果可能的话,请告诉我,如果我想运行此命令,如何调用我的 .NET Core 项目?

Scaffold-ViewModels -Input ModelsEntities -Output ModelsViewModels

编辑:经过进一步调查,我看到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 创建自动化脚本。

如果我理解正确,您想实现此用例:

"在 nuget 包安装中,我想启动一个解析项目源代码并构建新的生成文件的 ps 脚本"?

您无法以这种方式模拟 TT 脚本交付,因为 TT 是已经作为 VS 扩展安装(并集成到 VS

(的东西。通过 NUGET 交付 TT 脚本很简单,因为在安装时只需要将 tt 文件放入项目文件夹。

对于高级方案,需要自定义dotnet工具命令 https://learn.microsoft.com/en-us/dotnet/core/tools/extensibility 或 VS 扩展或两者兼而有之。

上次我使用它时(几年前(,init.ps1文件只是一个Powershell脚本,当您安装包时,它会在项目上下文中的Visual Studio中运行。我假设 EF 足够复杂,需要二进制文件,但您可以使用所有常规的 powershell cmdlet 来操作项目:

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

查看此处 https://learn.microsoft.com/en-gb/powershell/module/Microsoft.PowerShell.Management/?view=powershell-6 以获取更多命令。

最新更新