Как развернуть пакет Nuget, который предоставляет команду Powershell, такую ​​как EF Scaffold-DbContext? - PullRequest
0 голосов
/ 05 октября 2018

Предположим, я пишу сценарий автоматизации, который генерирует файлы для проекта .NET (поскольку T4 больше не поддерживается в проектах .NET Core) .Теперь я хочу развернуть его с помощью Nuget, чтобы я мог использовать команды, аналогичные Scaffold-DbContext Entity Framework.Проект, который я написал с помощью Консольного приложения, но я могу легко перенести его в другой тип, если это необходимо.

Я попытался просмотреть исходный код Entity Framework и увидеть, что они упаковывают init.ps1* 1008.* файл для добавления команд и реализация находится в здесь .

Извините, но я так далеко.Есть ли документация о том, как это сделать?Или, если возможно, скажите, пожалуйста, в моем случае, как мне вызвать мой проект .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.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

В прошлый раз, когда я работал с ним (который был несколько лет назад), файл init.ps1 был просто сценарием powershell, который запускался внутри visual studio в контексте вашего проекта при установке пакета.Я предполагаю, что EF достаточно сложен, поэтому ему нужны двоичные файлы, но вы можете использовать все обычные командлеты powershell для управления проектом:

Think New-Item, Copy-Item, Get-ChildItem, Test-Path,Add-Content и т. Д.

Посмотрите здесь https://docs.microsoft.com/en-gb/powershell/module/Microsoft.PowerShell.Management/?view=powershell-6, чтобы узнать больше команд.

0 голосов
/ 08 октября 2018

Если я правильно вас понял, вы хотите реализовать этот вариант использования:

"При установке пакета nuget я хочу запустить скрипт ps, который анализирует исходные файлы проекта и создает новые созданные файлы"?

Вы не можете эмулировать доставку сценария TT ​​таким образом, потому что TT - это то, что уже установлено как VS расширение (и интегрировано в VS).

TTДоставка скриптов через NUGET была простой, потому что при установке требовалось просто поместить файл tt в папку проекта.

Для сложных сценариев вам понадобится настраиваемая dotnet команда инструментов https://docs.microsoft.com/en-us/dotnet/core/tools/extensibility или VS Extension.или оба.

...