gpt4 book ai didi

c# - Roslyn 脚本 - 没有 "System"的脚本

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:14 25 4
gpt4 key购买 nike

截至this文章 我想写一个小的 C# 脚本引擎来工作。我试过这段代码:

System.IO.StreamReader sr = new System.IO.StreamReader("example.txt");
var prog = sr.ReadToEnd();
sr.Close();
ScriptOptions so = ScriptOptions.Default;
Console.WriteLine(CSharpScript.RunAsync(prog, so).Result.GetVariable("sum").Value);
Console.ReadKey();

而example.txt的文件内容为:

System.IO.StreamReader sr = new System.IO.StreamReader("foo.txt");
string s = sr.ReadToEnd();
int sum = System.Convert.ToInt32(s);

现在我想限制用户只能使用 C# 的基本函数(使用 int、string、while、for)和一些自定义函数,而不是整个 .NET 库。但即使我不包含 System.IO als 引用,用户也可以键入 System.IO.something 并获得正确的结果。

是否有可能从脚本中删除对“系统”的访问

我很高兴得到任何答案。

最佳答案

您需要正确设置 ScriptingOptions,这意味着需要使用自定义 MetadataReferenceResolver 而不是默认的,它会自动解析丢失的引用.我不知道是否已经有一个仅根据其参数解析程序集的解析器,但您当然可以实现您的。查看TestMetadataReferenceResolver ,它做类似的事情。

更新这不适用于 mscorlib 中定义的内容。

关于c# - Roslyn 脚本 - 没有 "System"的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com