如果未从 c# build 命令安装,则全局安装工具

问题描述

我的目标:在构建过程中运行 dotnet gitversion /updateprojectfiles

我的限制:并非所有机器都安装了 gitversion,所以我需要在没有安装的机器上安装它。但是,当尝试安装已安装的工具时,Microsoft 的 dotnet tool install 将返回代码 1。所以我需要先检查它是否安装,如果没有,则安装它。

我的第一个解决方案:编写一个批处理文件并从预构建脚本中调用它。

复杂性:一些构建代码的机器是 linux,不识别批处理文件

我的问题:如何将我的逻辑编写为预构建命令的一部分,同时适用于 Windows 和 Linux?

代码: gitversion-up-to-date.cmd:

FOR /F "tokens=* USEBACKQ" %%F IN (`dotnet tool list -g ^| findstr gitversion.tool`) DO (
SET "grep=TRUE"
)

if %grep%==TRUE goto setVersion

dotnet tool install -g GitVersion.Tool
setVersion

:setVersion
dotnet gitversion /updateprojectfiles

然后从 csproj 预构建:

$(SolutionDir)gitversion-up-to-date.cmd

我该如何编写这个逻辑,最好是直接在预构建中编写,同时适用于 windows 和 linux?

我最大的问题 atm 是了解如何编写用于查找工具是否已安装的逻辑。

TIA!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...