c# - CSScript 重新编译?
问题描述
我正在将 VB.Net 脚本添加到 C# 应用程序中。如何使用 CS Script 重新编译脚本?在 C# 后端,我添加如下脚本代码:
public static string AddGlobalCode(string code)
{
// Wrap the user's code in some boilerplate
string codeText =
@"Option Strict Off
Imports System
Namespace DXBScript
Public Module globals
" + code + @"
End Module
End Namespace";
try
{
CSScript.LoadCode(codeText);
return "OK";
}
catch (Exception ex)
{
return ex.Message;
}
}
code
一些 vb.net 代码在哪里。它可以是Class
,Sub
等Function
。例如:
Function DoSomething(x)
Return x + x
End Function
Class SomeClass
...
End Class
CallSomeFunction()
我第一次运行该AddGlobalCode
函数时,它编译正常,我可以调用该DoSomething
函数。但是,如果我想修改脚本(无需重新启动整个应用程序),例如:
Function DoSomething(x)
Return x + x * 2
End Function
如果我AddGlobalCode
再次运行然后执行DoSomething
函数 - 使用相同的参数 - 我得到原始结果 ( x + x
),而不是新结果 ( x + x * 2
)。如果我使用不同的参数运行该函数,则会出现错误:
错误 BC30562:“DoSomething”在模块“DXBScript.globals”和“DXBScript.globals”中的声明之间不明确。
如何删除然后添加或修改DoSomething
?最好,我会删除或修改整个globals
VB 模块,然后将其添加回来——因为脚本中不仅仅是函数DoSomething
。
这是我作为 CS Script 的第一次尝试(使用 MS Script Control)。
解决方案
推荐阅读
- amazon-eks - 使用 eksctl 在同一 AZ 中的多个子网
- jquery - Why does this css selector work even though it has a bracket missing?
- java - Maven依赖项会发生什么
- linux - 复制文件夹内容并使用 diff 名称保存文件 Unix
- ruby-on-rails - Rails Devise parameters not written to DB (only on server)
- react-native - react-native-udp Packet not sent until other packets are received
- javascript - Doesn't add records into PouchDB when used same function over again
- laravel - Laravel Eloquent 如何查询 avrege 并在两个值之间进行比较
- java - Spring Boot JPA 多对一 - 基于关联模型条件获取数据
- matrix - Duplicate key measure columns appearing in a matrix