CS-Scriptライブラリを使用して動的コードを実行しています。スクリプト エンジンとして使用するのではなく、機能をその場でアプリケーションにプラグインするために使用したいと考えています。これがホスティングコードです...
using System;
using CSScriptLibrary;
using System.Reflection;
using System.IO;
namespace CSScriptTester
{
class Program
{
static void Main(string[] args)
{
// http://www.csscript.net/
Console.WriteLine("Running Script.");
CSScript.Evaluator.ReferenceAssembly(Assembly.GetAssembly(typeof(System.Windows.Forms.MessageBox)));
string code = File.ReadAllText("SomeCode/MyScript.cs");
dynamic block = CSScript.Evaluator.LoadCode(code);
block.ExecuteAFunction();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
そして、これが SomeCode/MyScript.cs の内容です...
using System;
using System.Windows.Forms;
namespace CSScriptTester.SomeCode
{
class MyScript
{
public void ExecuteAFunction()
{
MessageBox.Show("Hello, world!");
}
}
}
これはうまくいきます。ホスティング コードでは、ホスティング コードにアセンブリ参照の指定を任せたくありません。コメントアウトしCSScript.Evaluator.ReferenceAssembly(Assembly.GetAssembly(typeof(System.Windows.Forms.MessageBox)));
て実行すると、エラーが発生します...
エラー CS0234: 型または名前空間名
Forms' does not exist in the namespace
System.Windows'. アセンブリ参照がありませんか?
コマンドラインツールを使用してこれを実行していた場合、これをスクリプトの先頭に追加して参照を追加できます...
//css_reference System.Windows.Forms.dll
しかし、.NET アプリケーションのコンテキストで実行すると、それは無視されるようです。参照を適切に解決するにはどうすればよいですか?