有人在这里找到答案calling a ruby script in c#调用从C#
但确实是工作的Ruby脚本?我试过这个,但它一直没有通过“系统找不到指定的文件”错误,我假设它是因为ruby命令在文件名之前,但我不太确定。
感谢您的帮助
有人在这里找到答案calling a ruby script in c#调用从C#
但确实是工作的Ruby脚本?我试过这个,但它一直没有通过“系统找不到指定的文件”错误,我假设它是因为ruby命令在文件名之前,但我不太确定。
感谢您的帮助
链接的答案看起来相当正确,但它显然不是为你工作。这意味着它可能是两件事之一。
1)反斜杠咬你。尝试改变
ProcessStartInfo info = new ProcessStartInfo("ruby C:\rubyscript.rb");
到
ProcessStartInfo info = new ProcessStartInfo(@"ruby C:\rubyscript.rb");
或
ProcessStartInfo info = new ProcessStartInfo("ruby C:\\rubyscript.rb");
的第一个改变使用字符串文字,第二个正确逃脱反斜线。
2)环境路径没有得到导出到它的Ruby的bin目录。这不太可能,也更难以测试,所以我会专注于第一个。
好的答案;但在第二点,最近版本的Windows给你'where'命令,这使得路径问题很容易理清。只要运行'ruby',你就会得到一个匹配模式的路径列表。如果没有匹配,你会得到一个错误。 – Kevin 2011-03-09 20:40:04
@Iceman - 感谢“where”命令的提示 - 我不知道。不幸的是,我在工作时被困在WinXP上,所以这对我来说并不好。 – 48klocs 2011-03-09 20:57:15
感谢帮助球员,由于某种原因,它在这个例子中写的方式对我来说并不起作用,我终于得到它的方式是这样做的 'ProcessStartInfo rubyProc = new ProcessStartInfo(@“ruby”); rubyProc.Arguments = @“C:\ rubytest.rb”;' – exHash 2011-03-10 16:12:38
你也可以尝试与IronRuby像这样的东西
using System;
using Microsoft.Scripting.Hosting;
using IronRuby;
class ExecuteRubyExample
{
static void Main()
{
ScriptEngine engine = IronRuby.Ruby.CreateEngine();
engine.ExecuteFile("C:/rubyscript.rb");
}
}
我确实检查了IR,但不幸的是我还在3.5上运行,并且不想从源代码编译IR代码,但它是一个很好的选择, 谢谢 – exHash 2011-03-10 16:18:02
执行Ruby代码,如果你已经安装了Ruby和代码文件的路径'红宝石C:\ ruby_script.rb'是正确的,它应该工作.. – rubyprince 2011-03-09 19:49:44