c# - 如何部署像 EF 的 Scaffold-DbContext 这样提供 Powershell 命令的 Nuget 包?

标签 c# .net powershell .net-core nuget

假设我正在编写一个为 .NET 项目生成文件的自动化脚本 (因为 .NET Core 项目不再支持 T4)。现在我想使用 Nuget 部署它,所以我可以使用类似于 Entity Framework 的 Scaffold-DbContext 的命令。我使用控制台应用程序编写的项目,但如果需要,我可以轻松地将其转移到其他类型。

我试着查看 Entity Framework 的源代码,发现他们正在打包一个 init.ps1文件以添加命令,实现在 here 中.

抱歉,这是我能做到的。是否有关于如何执行此操作的文档?或者,如果可能的话,请根据我的情况告诉我,如果我想运行此命令,我该如何调用我的 .NET Core 项目?

Scaffold-ViewModels - 输入模型\实体 - 输出模型\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 等)。

如果可能,我们将不胜感激用于从 Nuget 创建自动化脚本的 Hello World 教程/入门。

最佳答案

如果我对你的理解是正确的,你想实现这个用例:

“在安装 nuget 包时,我想启动一个 ps 脚本来解析项目源并创建新生成的文件”?

您不能以这种方式模拟 TT 脚本传递,因为 TT 已经作为 VS extension 安装了。 (并集成到 VS)。

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

对于高级场景,您需要自定义 dotnet 工具命令 https://learn.microsoft.com/en-us/dotnet/core/tools/extensibility 或 VS 扩展或两者。

关于c# - 如何部署像 EF 的 Scaffold-DbContext 这样提供 Powershell 命令的 Nuget 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52658233/

相关文章:

c# - 如何在 cms Repeater 中仅显示包含图像的文档类型项目 - Kentico CMS

powershell - 批处理脚本期间重启环境和脚本

c# - 如何在 .NET MVC 中返回 Backbone 集合

.net - 在 VB.NET 中添加事件处理程序的语法

class - 如何从 Powershell 类中正确调用使用 Add-Type 添加的类型的静态方法?

系统管理员的 Powershell URI 构建器

c# - 未处理的任务异常未拆除控制台应用程序

c# - 如何使用 IDisposable 接口(interface)释放 excel 对象

C# - 服务器套接字不检索数据

c# - 如何使用 C# 仅获取目录中的文件名?