创建可与nuget一起分发的自定义CLI工具

时间:2018-03-17 17:34:06

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

我写了一个.net核心控制台程序,它生成一些代码来帮助我加快开发过程。现在我想通过nuget分发这个控制台程序,所以我可以在其他项目中使用该工具,比如Entity Framework的命令行工具。但是我读到了每一个,nuget只用于类库。但我希望我的包能够运行,它不应该用于导入和类似的东西。显然,微软使用实体框架工具做到了这一点,所以我认为必须有办法。

有人能指出我正确的方向吗?

我发现了这个问题(Best practice to include console app in NuGet),但问题是答案是,它是不可能的,就像你在EF Tools中看到的一样。

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,并且已经成功地共享了nuget.org上的控制台包

您可以为dotnet工具创建命令行扩展。与dotnet ef类似,您可以创建dotnet myAwesomeTool命令。您需要做的唯一事情是以下:

创建一个控制台应用程序并将以下代码添加到.csproj

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

构建解决方案,您将在bin文件夹中找到nuget包。可以分发此nuget包,当您安装它时,可以在安装nuget的项目中运行dotnet myAwesomeTool。像我的魅力一样工作=)

要在其他项目上安装它,请将其添加到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