IronRuby下載下傳位址http://ironruby.codeplex.com/releases/
1.配置 App.config或Web.config增加如下配置節
1 < configSections >
2 < section name ='microsoft.scripting' requirePermission ='false' type ='Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' />
3 </ configSections >
4
5 < microsoft.scripting >
6 < languages >
7 < language extensions ='.rb' displayName ='IronRuby' type ='IronRuby.Runtime.RubyContext, IronRuby, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' names ='IronRuby;Ruby;rb' />
8 </ languages >
9 </ microsoft.scripting >
2.添加引用IronRuby.dll,IronRuby.Libraries.dll,Microsoft.Scripting.dll
3.控制台HelloWorld示例
1 class Program
2 {
3 static void Main( string [] args)
4 {
5 ScriptRuntime runtime = ScriptRuntime.CreateFromConfiguration();
6 ScriptEngine engine = runtime.GetEngine( " Ruby " );
7 engine.Execute( " puts \ " hello world ! \ "" );
8 System.Console.ReadKey();
9 }
10 }
4.解釋IronRuby檔案 增加檔案Test.rb(存為UTF-8編碼格式), .net下建立Test類并調用執行個體方法,顯示相加結果3。
1 class Test
2 def add a, b
3 puts a + b
4 end
5 end
代碼
class Program
{
static void Main( string [] args)
{
ScriptRuntime runtime = ScriptRuntime.CreateFromConfiguration();
ScriptEngine engine = runtime.GetEngine( " Ruby " );
ScriptSource source = engine.CreateScriptSourceFromFile( " Test.rb " , Encoding.UTF8);
source.Execute();
var code = String.Format( " {0}.new.method :{1} " , " Test " , " add " );
var action = engine.CreateScriptSourceFromString(code).Execute();
var result = engine.Operations.Call(action, 1 , 2 );
System.Console.ReadKey();
}
}
在.net 4.0 條件下上例中調用代碼可直接替換為
dynamic test = engine.Execute("Test.new");
test.add(1, 2);
參見http://ironruby.net/Documentation/.NET/Hosting 該例中使用了ExcuteFile方法,該方法不支援UTF-8格式檔案。
5.IronRuby中調用.net對象,修改Test.rb檔案
class Test
def add a, b
result = a + b
MessageBox.Show(result.to_s)
end
end
代碼
class Program
{
static void Main( string [] args)
{
ScriptRuntime runtime = ScriptRuntime.CreateFromConfiguration();
ScriptEngine engine = runtime.GetEngine( " Ruby " );
ScriptSource source = engine.CreateScriptSourceFromFile( " Test.rb " , Encoding.UTF8);
source.Execute();
engine.Execute( " load_assembly \ " System.Windows.Forms\ "" );
engine.Execute( " include System::Windows::Forms " );
dynamic test = engine.Execute( " Test.new " );
test.add( 1 , 2 );
System.Console.ReadKey();
}
}
6.Web調用,建立web項目,根目錄建立檔案Test.rb
class Test
def sayHello
HttpContext.Current.Response.Write( " <script type='text/javascript'>alert('hello world!');</script> " );
end
end
代碼
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
ScriptRuntime runtime = ScriptRuntime.CreateFromConfiguration();
ScriptEngine engine = runtime.GetEngine( " Ruby " );
ScriptSource source = engine.CreateScriptSourceFromFile(Server.MapPath( " Test.rb " ), Encoding.UTF8);
source.Execute();
engine.Execute( " load_assembly \ " System.Web\ "" );
engine.Execute( " include System::Web " );
dynamic test = engine.Execute( " Test.new " );
test.sayHello();
}
}
轉載于:https://www.cnblogs.com/haojuandon/archive/2010/04/18/1714796.html