Używam biblioteki CS-Script do uruchamiania kodu dynamicznego. Zamiast używać go jako silnika skryptów, chcę go użyć do podłączenia funkcjonalności do aplikacji w locie. Oto kod gospodarzem ...Jak dodać odniesienie do skryptu w języku C#
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();
}
}
}
A oto zawartość SomeCode/MyScript.cs ...
using System;
using System.Windows.Forms;
namespace CSScriptTester.SomeCode
{
class MyScript
{
public void ExecuteAFunction()
{
MessageBox.Show("Hello, world!");
}
}
}
To działa prawidłowo. W kodzie hostingu nie chcę, aby kod hostingu był odpowiedzialny za określenie referencji zespołu. Więc wykomentuj CSScript.Evaluator.ReferenceAssembly(Assembly.GetAssembly(typeof(System.Windows.Forms.MessageBox)));
i uruchomić go i pojawia się błąd ...
error CS0234: Typ lub obszaru nazw
Forms' does not exist in the namespace
System.Windows'. Brakuje odniesienia do zespołu?
wiem jakbym wykonanie tego za pomocą narzędzi wiersza poleceń mogę dodać to na początku skryptu, aby dodać odniesienie ...
//css_reference System.Windows.Forms.dll
ale to wydaje się być ignorowane podczas wykonywania to w kontekście aplikacji .NET. Jak mogę go naprawić, aby poprawnie rozwiązać referencje?
Dzięki za wzmiankę o // css_reference, nie mogłem wymyślić, jak to zrobić! – Nile