我在名为GraphViz
的C#项目中使用工具的二进制文件。
问题是我必须将二进制路径包含为硬编码,我不想这样做。
IRenderer renderer = new Renderer("C:\\Program Files (x86)\\Graphviz2.38\\bin"); // todo: remove hardcoded GraphViz path
我想模仿linux which
命令。
只需传递二进制名称(例如dot
)并获取路径。
GetBinaryPath("dot"); // return the above path
我很感激您开始搜索的任何想法或主题。
请注意
目标操作系统:Windows
.NET版本:4
答案 0 :(得分:2)
如果您需要查找仅给出可执行文件名的路径(并且安装目录位于您的PATH
环境变量中)
选项1:
对where
类使用Process
命令。 (测试退出代码,解析输出)
选项2:
您可以获取环境PATH环境变量,将其拆分为“;”并测试您的可执行文件名称是否存在。
答案 1 :(得分:0)
首先,您需要找到Windows搜索可执行文件的所有目录,这些目录来自环境变量%PATH%。 然后你需要从%PATHEXT%找到所有扩展名(.com,.exe,.bat等)。
然后你就这样检查一下:
(try_cast(New_NewValue as date ) >= '04/01/2017' AND try_cast(New_NewValue as date ) IS NOT NULL)
)