11

我开发了一个命令行实用程序,它将 .NET 程序集作为输入并生成 XML 作为输出以供其他产品使用。

理想情况下,我会拥有它:

  • 通过 NuGet 作为解决方案级包提供
  • 可在项目级别的构建后事件中访问
  • 我被卡住的位:只需指定不带路径的命令名称即可在该构建后事件中访问
    • MyTool.exe /i $(TargetPath)而不是..\packages\ToolName-1.0.0.0\tools\MyTool.exe /i $(TargetPath)

我已经可以做的前两件事,以及上面的构建后事件命令工作得很好,但前提是我首先打开包管理器控制台(即使我没有输入任何命令,只需要打开它) - 似乎它在启动时对路径进行了一些很酷的操作,因此我不必指定 ..\packages\ToolName-1.0.0.0\tools\MyTool.exe。

我的 NuGet 包是否可以使用 Init.ps1 脚本(或其他一些机制)来调整路径,以便在编写构建后事件时无需指定工具的完整相对路径,或者以其他方式包含运行工具自动作为后期构建步骤?

注意- 我接受 NuGet 可能不是提供此类工具的理想载体,但它会很方便。

4

3 回答 3

2

仅针对遇到此问题的人;

我见过人们为此使用 nuget 包,例如参见 nswag.msbuild: https ://github.com/RicoSuter/NSwag/wiki/NSwag.MSBuild

简而言之,nuget 包包含该工具作为命令行实用程序可执行文件。它还定义了一些定义该工具路径的 buildprops(类似于/packages/myToolNugetPkg/mytool.exe)然后您可以在 msbuild 任务中使用此属性。

.NET 核心还支持“工具”,这正是您所需要的:

https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools

于 2019-12-12T08:41:01.083 回答
1

Chocolatey(在技术上符合使用 NuGet 的条件)具有非常酷的神奇“匀场”功能。

简而言之,包中的任何可执行文件都将自动在 PATH 上可用。这很酷。

于 2017-10-15T00:54:12.027 回答
-2

This might help you -> http://lostechies.com/joshuaflanagan/2011/06/24/how-to-use-a-tool-installed-by-nuget-in-your-build-scripts/

I used the solution with the wildcard in the 'CD' command, so my postbuild looks like this:

CD "$(SolutionDir)packages\ToolName*\tools"
MyTool.exe
于 2013-01-29T08:02:17.957 回答