Dinamik kodu çalıştırmak için CS-Script kütüphanesini kullanıyorum. Bir betik motoru olarak kullanmak yerine, işlevselliği anında bir uygulamaya takmak için kullanmak istiyorum. İşteC# Komut Dosyası Referansı Nasıl Eklenir
using System;
using System.Windows.Forms;
namespace CSScriptTester.SomeCode
{
class MyScript
{
public void ExecuteAFunction()
{
MessageBox.Show("Hello, world!");
}
}
}
Bu iyi çalışır ... ...
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();
}
}
}
barındıran kod Ve burada SomeCode/MyScript.cs içeriğini var. Barındırma kodunda, barındırma kodunun montaj referanslarını belirtmekten sorumlu olmasını istemiyorum. Bu yüzden CSScript.Evaluator.ReferenceAssembly(Assembly.GetAssembly(typeof(System.Windows.Forms.MessageBox)));
açıklama ve çalıştırın ve ben ...
hata CS0234 hatası alıyorum: tür veya ad alanı adı
Forms' does not exist in the namespace
System.Windows'. Bir montaj referansı eksik misiniz?
Ben başvuru eklemek için Senaryonun en üstüne bu ekleyebilirsiniz komut satırı araçlarını kullanarak bu yürütme olsaydı Biliyorum ...
//css_reference System.Windows.Forms.dll
Ama bu çalıştırırken göz ardı gibi görünüyor bir .NET uygulaması bağlamında. Referansları doğru bir şekilde çözmek için nasıl alabilirim?
// css_reference için teşekkürler, bunu nasıl yapacağını anlayamadım! – Nile