我开发了一个命令行实用程序,它将.NET程序集作为输入,并生成XML作为输出供其他产品使用。
理想情况下我会拥有它:
我已经可以做的前两件事,以及上面的构建后事件命令工作得很好,但只有当我第一次打开包管理器控制台时(即使我没有输入任何命令,只需要打开它) ) - 看起来它在路径启动时做了一些很酷的事情,所以我不必指定.. \ packages \ ToolName-1.0.0.0 \ tools \ MyTool.exe。
我的NuGet包是否可以使用Init.ps1脚本(或其他一些机制)来调整路径,以便在编写构建后事件时无需指定工具的完整相对路径,或者否则自动包含运行工具作为构建后步骤?
注意 - 我接受NuGet可能不是提供此类工具的理想载体,但它会很方便。
答案 0 :(得分:1)
Chocolatey(在技术上有资格使用NuGet)有一个非常酷的神奇“垫片”设施。
简而言之,您的包中的任何可执行文件都将自动在PATH上提供。 It's very cool.
答案 1 :(得分:1)
只为遇到此问题的人提供
我见过人们为此使用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
答案 2 :(得分:-2)
这可能会对您有所帮助 - > http://lostechies.com/joshuaflanagan/2011/06/24/how-to-use-a-tool-installed-by-nuget-in-your-build-scripts/
我在'CD'命令中使用带通配符的解决方案,所以我的postbuild看起来像这样:
CD "$(SolutionDir)packages\ToolName*\tools"
MyTool.exe