假定我正在编写一个自动化脚本,该脚本为.NET项目生成文件(因为.NET Core项目不再支持T4)。现在,我想使用Nuget进行部署,因此我可以使用类似于Entity Framework的Scaffold-DbContext
的命令。我使用Console App编写的项目,但是如果需要,我可以轻松地将其转换为其他类型。
我尝试查看Entity Framework的源代码,发现它们正在打包init.ps1
文件以添加命令,并且实现位于here中。
抱歉,这是我所能做到的。是否有有关如何执行此操作的文档?或者,如果可能的话,请告诉我我的情况,如果我想运行此命令,如何调用我的.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创建自动化脚本。
答案 0 :(得分:1)
如果我理解您的权利,那么您想实现此用例:
“在安装nuget软件包时,我想启动一个ps脚本来解析项目源并创建新的生成文件”?
您无法以这种方式模拟TT脚本的传递,因为TT是已经安装为VS extension(并已集成到VS)的东西。
通过NUGET传递TT脚本非常简单,因为在安装时仅需要将tt文件放入项目文件夹中即可。
对于高级方案,您将需要自定义dotnet
工具命令
https://docs.microsoft.com/en-us/dotnet/core/tools/extensibility
或VS Extension或两者兼有。
答案 1 :(得分:1)
我上一次使用它(几年前)是init.ps1
文件,它只是一个Powershell脚本,在安装软件包时会在项目上下文中的Visual Studio中运行。我认为EF非常复杂,它需要二进制文件,但是您可以使用所有常规的powershell cmdlet来操纵项目:
考虑New-Item
,Copy-Item
,Get-ChildItem
,Test-Path
,Add-Content
等。