我写了一个.net核心控制台程序,它生成一些代码来帮助我加快开发过程。现在我想通过nuget分发这个控制台程序,所以我可以在其他项目中使用该工具,比如Entity Framework的命令行工具。但是我读到了每一个,nuget只用于类库。但我希望我的包能够运行,它不应该用于导入和类似的东西。显然,微软使用实体框架工具做到了这一点,所以我认为必须有办法。
有人能指出我正确的方向吗?
我发现了这个问题(Best practice to include console app in NuGet),但问题是答案是,它是不可能的,就像你在EF Tools中看到的一样。
答案 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