Создайте собственный инструмент CLI, который можно распространять с помощью nuget.

Я написал основную консольную программу .net, которая генерирует некоторый код, чтобы помочь мне ускорить процесс разработки. Теперь я хотел бы распространять эту консольную программу через nuget, чтобы я мог использовать этот инструмент в других проектах, таких как инструменты командной строки из Entity Framework. Но я везде читал, что nuget используется только для библиотек классов. Но я хочу, чтобы мой пакет мог работать, и его нельзя было использовать для импорта и тому подобного. И, очевидно, Microsoft сделала это с помощью Entity Framework Tools, поэтому я думаю, что должен быть какой-то способ.

Может ли кто-нибудь указать мне в правильном направлении?

Я нашел этот вопрос (Рекомендации по включению консольного приложения в NuGet ), но проблема в том, что ответ в том, что это невозможно, как вы можете видеть с помощью EF Tools.


person Simons0n    schedule 17.03.2018    source источник


Ответы (1)


Я нашел решение и уже успешно поделился консольным пакетом на nuget.org.

Вы можете создать расширение командной строки для инструментов dotnet. Подобно dotnet ef вы можете создать команду dotnet myAwesomeTool. Единственное, что вам нужно сделать, это следующее:

Создайте консольное приложение и добавьте следующий код в свой .csproj.

<PackageId>Company.MyAwesomeTool</PackageId>
<AssemblyName>dotnet-myAwesomeTool</AssemblyName>
<PackageType>DotnetCliTool</PackageType>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>

Создайте решение, и вы найдете пакет nuget в папке bin. Этот пакет nuget можно распространять, и после его установки вы можете запускать dotnet myAwesomeTool в проектах, где установлен nuget. Работает как шарм для меня =)

Чтобы установить его в других проектах, добавьте это в csproj:

<ItemGroup>
  <PackageReference Include="company.MyAwesomeTool" Version="1.0.0" />
</ItemGroup>
<ItemGroup>
  <DotNetCliToolReference Include="company.MyAwesomeTool" Version="1.0.0" />
</ItemGroup>

Для получения дополнительной информации: https://blog.maartenballiauw.be/post/2017/04/10/extending-dotnet-cli-with-custom-tools.html

person Simons0n    schedule 17.03.2018