【问题标题】:Create a custom CLI Tool that can be distributed with nuget创建一个可以使用 nuget 分发的自定义 CLI 工具
【发布时间】:2018-03-17 17:34:06
【问题描述】:

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

谁能指出我正确的方向?

我发现了这个问题 (Best practice to include console app in NuGet),但问题是,答案是不可能的,正如您在 EF 工具中看到的那样。

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      相关资源
      最近更新 更多