Nuget - 为包管理器控制台编写工具(自定义cmdlet) [英] Nuget - Writing tools for Package Manager Console (custom cmdlets)
问题描述
我安装了nuget包管理器,我真的很喜欢mvc-scaffold扩展。我想为我的项目写类似的工具。
有没有任何API参考或一些nuget的文档,我可以从中学习? TIA为任何建议。
编辑:
问题已经回答了(thx一次),这里有一些链接可以是有帮助的: p>
- http://nuget.codeplex。 com / releases / view / 59864 - package explorer(下载+查看软件包里面的内容 - 感谢上帝在mvc脚本ps脚本中的评论))
- http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Steve-Sanderson-MvcScaffolding - mvcConf2的视频
- 当然还有Steve Sanderson的博客: http://blog.stevensanderson .com /
我写了您提到的MvcScaffolding的最新版本在你的问题。下面是如何将PowerShell cmdlet添加到包管理器控制台:
- Cmdlet用C#编写并编译成.NET程序集href =http://msdn.microsoft.com/en-us/magazine/cc163293.aspx> http://msdn.microsoft.com/en-us/magazine/cc163293.aspx )
- .NET程序集包含在MvcScaffolding的tools文件夹中(请参阅 http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory )
- MvcScaffolding还包含一个init.ps1文件,NuGet在每次打开包含它的解决方案时运行(也在 http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#Automatically_Running_PowerShell_Scripts_During_Package_Installation_and_Removal )。此脚本使用PowerShellImport-Module命令从.NET程序集中导入cmdlet,使其可在控制台中使用。
请注意,实际上并不需要在C#中编写cmdlet并调用Import-Module。一个更简单的替代方法是在PowerShell中编写它们(请参阅 http://technet.microsoft.com/en-us /magazine/ff677563.aspx ),并在NuGet包的init.ps1文件中内联它们。
或者,如果你的问题是如何添加自定义脚手架到MvcScaffolding(例如,所以你可以说Scaffold MyCustomThing -somecustomparams),然后使用命令Scaffold CustomScaffolder MyCustomThing,然后编辑出现在您的CodeTemplates / Scaffolders文件夹中的PS1 / T4文件。我会尽快博客有关这方面的更多细节。
I've installed nuget package manager and I really love mvc-scaffold extension. I would like to write similar tool for my projects.
Is there any API reference or some documentation for nuget I can learn from ? TIA for any suggestions.
Edit: Question is already 'answered' (thx one more time), here are some links that can be helpful:
- http://nuget.codeplex.com/releases/view/59864 - package explorer (download + see what it's inside the package - thank God for comments in mvc scaffolding ps scripts :))
- http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Steve-Sanderson-MvcScaffolding - video from mvcConf2
- and of course Steve Sanderson's blog : http://blog.stevensanderson.com/
I wrote the current version of MvcScaffolding that you mention in your question. Here's how it adds PowerShell cmdlets to the Package Manager Console:
- Cmdlets are written in C# and compiled into a .NET assembly (see http://msdn.microsoft.com/en-us/magazine/cc163293.aspx)
- The .NET assembly is included in MvcScaffolding's "tools" folder (see http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory)
- MvcScaffolding also contains an init.ps1 file that NuGet runs each time you open a solution containing it (also described at http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#Automatically_Running_PowerShell_Scripts_During_Package_Installation_and_Removal). This script uses the PowerShell "Import-Module" command to import the cmdlets from the .NET assembly, making them available in the console.
Note that it's not actually necessary to write your cmdlets in C# and call Import-Module. A simpler alternative is to write them in PowerShell (see http://technet.microsoft.com/en-us/magazine/ff677563.aspx) and define them inline in your NuGet package's init.ps1 file.
Or, if your question is about how to add custom scaffolders to MvcScaffolding (e.g., so you can say "Scaffold MyCustomThing -somecustomparams"), then use the command "Scaffold CustomScaffolder MyCustomThing", and then edit the PS1/T4 files that appear in your CodeTemplates/Scaffolders folder. I'll blog more details about this soon.
这篇关于Nuget - 为包管理器控制台编写工具(自定义cmdlet)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!