我正在尝试在 ac# .net 应用程序中执行一些任意的 c sharp 脚本,但我尝试了多种方法来添加程序集的外部文件引用,但它似乎永远不会抱怨我错过了程序集。代码如下:
var globals = new Globals();
globals.mventry = myCurrentmventry;
ScriptState state = null;
var scriptOptions = ScriptOptions.Default;
//all the ways I have tried
var metadata = MetadataReference.CreateFromFile(typeof(MVEntry).Assembly.Location);
scriptOptions.AddReferences(metadata);
scriptOptions.AddReferences(@"\\path\to\Microsoft.MetadirectoryServicesEx.dll");
scriptOptions.AddReferences(Assembly.GetAssembly(typeof(MVEntry)));
CSharpScript.RunAsync(@"string result;
if(mventry[""attribute""].Value ==""value"")
{result = ""yes"";}
else
{result = ""no"";}", scriptOptions)
.ContinueWith(s => state = s.Result).Wait();
string result = state.Variables[0].Value.ToString();
//Also tried this way for fun
// string result CSharpScript.EvaluateAsync(@"mventry[""attribute""].Value",
scriptOptions,globals);
}
// 我的全局类
public class Globals
{
public MVEntry mventry;
}
无论我如何添加引用或尝试执行我得到的脚本:
Microsoft.CodeAnalysis.Scripting.CompilationErrorException:(1,1):错误 CS0012:类型“MVEntry”在未引用的程序集中定义。您必须添加对程序集 'Microsoft.MetadirectoryServicesEx, Version=4.1.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 的引用
我可能正在做一些明显错误的事情,但我只是看不到它,事实上,当我观看 scriptOptions 变量时,似乎没有任何元数据元素。任何帮助将不胜感激。