我正在开发一个开源库,它主要由一个针对 .NET Standard 2.0 的类库项目组成。最重要的是,我还实现了一个控制台应用程序,它是该库的 CLI。控制台项目(由于历史原因)仅针对 .NET Framework 4.6.2。
现在我想知道为了让这个控制台应用程序可供社区使用,最佳实践是什么。从最广泛的层面来看,我看到两种可能性:
- 将控制台应用程序作为单独的 NuGet 发送。
- 将控制台应用程序与类库放在同一个 NuGet 中,因为它只是一个次要的附加组件,并不能证明自己的包是合理的。
从历史上看,我一直使用第二种方法,但考虑到类库可以在多目标场景中使用,我不再确定。也许将控制台应用程序分离在自己的 NuGet 中会更干净,这样它对完整 .NET 框架的依赖就很清楚。
不管怎样,我想知道控制台exe在NuGet的文件结构中属于哪里。从历史上看,我一直把它放在tools\net462
但关于tools
文件夹上这一页让我没有安全感:
可通过程序包管理器控制台访问 Powershell 脚本和程序
我不一定想象有人使用包管理器控制台中的 CLI。相反,它会在某个 shell 的某个地方用作独立的 exe。
有一个解决方案似乎适合您的需求。您可以为以下命令创建命令行扩展dotnet
工具。喜欢dotnet ef
你可以创建一个dotnet myAwesomeTool
命令。您唯一需要做的就是以下操作:
创建一个控制台应用程序并将以下代码添加到您的 .csproj
<PackageId>Company.MyAwesomeTool</PackageId>
<AssemblyName>dotnet-myAwesomeTool</AssemblyName>
<PackageType>DotnetCliTool</PackageType>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
构建解决方案,您将在 bin 文件夹中找到一个 nuget 包。这个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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)