我想编写一个 NuGet 包,在编译之前自动执行 dotnet 工具。 dotnet 工具将处理文件,并生成(非代码)输出。
通过将
.targets
文件添加到我的 NuGet 包中可以轻松完成此操作:
\build
\My.Package.targets
我们
Exec
工具:
<!-- My.Package.targets -->
<Project>
<ItemGroup>
<FilesToProcess Include="**/*.my_extension" />
</ItemGroup>
<Target Name="Run Tool" BeforeTargets="CoreCompile">
<Exec Command="dotnet my-tool -input %(FilesToProcess.Identity)" />
</Target>
</Project>
但是,这仍然需要用户创建工具清单,并在构建项目之前安装该工具。
dotnet new tool-manifest
dotnet tool install My.Tool
我想使其自动化 - 开发人员的过程应该像“安装 NuGet 包,它将自动安装/引用该工具”一样简单。
DotNetCliToolReference
来引用该工具?[自 .NET Core 2.2 起不再受支持。
源生成器有 2 个关键限制 - 它们只能生成代码文件,不能生成任何其他类型的文件,并且不允许 IO。
我可以添加说明
请记住在构建此项目之前运行
和dotnet new tool-manifest
dotnet tool install My.Tool
但我坚信在开始新项目时应该减少摩擦。我尝试自动化任何过去的“克隆存储库,并在您选择的编辑器中打开解决方案”。
不幸的是,我不拥有该工具 - 它是第 3 方工具。