问题标签 [cs-script]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4219 浏览

c# - CS-Script Evaluator LoadCode:如何编译和引用第二个脚本(可重用库)

简而言之,问题是:您如何引用包含可重用脚本代码的第二个脚本,在您需要能够在脚本中的任何一个更改而无需重新启动主机应用程序的情况下卸载和重新加载脚本的约束下?

我正在尝试使用 CS-Script“编译器即服务”(CSScript.Evaluator)编译脚本类,同时引用刚刚从第二个“库”脚本编译的程序集。目的是库脚本应包含可用于不同脚本的代码。

这是一个示例代码,它说明了这个想法,但也会在运行时导致 CompilerException。

要运行代码,您需要 NuGet 包NUnit 和 cs-script

此行在运行时导致CompilerException

同样,使用CSScript.Evaluator.LoadCode而不是 CSScript.LoadCode 的原因是,当任一脚本发生更改时,可以随时重新加载脚本,而无需重新启动宿主应用程序。(根据http://www.csscript.net/help/Importing_scripts.html,CSScript.LoadCode已经支持包含其他脚本)

这是关于 CS-Script Evaluator 的文档:http ://www.csscript.net/help/evaluator.html

谷歌搜索结果的缺乏令人沮丧,但我希望我错过了一些简单的东西。任何帮助将不胜感激。

(这个问题应该在不存在的标签 cs-script 下提交。)

0 投票
3 回答
7688 浏览

c# - 如何添加对 C# 脚本的引用

我正在使用CS-Script库来执行动态代码。我不想将它用作脚本引擎,而是想用它来动态地将功能插入到应用程序中。这是托管代码...

这是 SomeCode/MyScript.cs 的内容...

这工作正常。在托管代码中,我不希望托管代码负责指定程序集引用。所以我注释掉CSScript.Evaluator.ReferenceAssembly(Assembly.GetAssembly(typeof(System.Windows.Forms.MessageBox)));并运行它,我得到了错误......

错误 CS0234:类型或命名空间名称Forms' does not exist in the namespaceSystem.Windows'。您是否缺少程序集参考?

我知道如果我使用命令行工具执行此操作,我可以将其添加到脚本顶部以添加引用...

但是在 .NET 应用程序的上下文中执行它时,这似乎被忽略了。我怎样才能让它正确解析引用?

0 投票
0 回答
218 浏览

c# - 如何使用 C# 编写具有变量和类访问权限的 C# 应用程序

我可以找到很多关于将 C# 用作脚本语言(CSScript、Mono、Roslyn)的信息,但似乎没有一个能满足我的需求(或者它确实能满足我的需求,但我根本不明白如何使用它)。

我想要做的是:假设我编写了一个包含多个类的 C# 程序。当程序启动时,它要么在内存中寻找一个cs文件或一个脚本。我将程序中的一个类剪切并粘贴到文件或文本框中。当程序加载时,它会找到该类并像以前一样运行,只是现在该类位于另一个位置。我可以编辑此类(脚本)并访问程序中的其他类和变量以更改程序的某些部分而无需编译。

这可能吗?如果不是,最好的解决方案是什么(跨平台会很好)?

0 投票
1 回答
96 浏览

c# - 以管理员身份启动 CS-Script

我有一些逻辑复杂的 CS 脚本,需要以管理员身份启动该脚本。我试图添加

到脚本文件的开头,它不起作用,所以也许我做错了什么。要点是我需要在脚本文件中指定管理员权限,而不是在外部。有任何想法吗?

0 投票
0 回答
511 浏览

c# - 在 CS-Script 中添加对调用应用程序的引用

我有一个用 C# 编写的工具,它曾经可以工作(不是我写的)。它所做的基本上是使用CS-Script运行 C# 脚本。该脚本可以通过使用指令来使用对 DLL 和 EXE(我认为)的引用:

我的应用程序,我们称之为 MyApp,被编译成一个 EXE 文件。它还声明了一些旨在帮助脚本执行操作的类型。正如我从我拥有的一个示例脚本中了解到的那样,它曾经可以工作,这是通过在脚本的开头添加一个引用来实现的,如下所示:

请注意,我的应用程序不是 DLL,因此文件 MyApp.dll 不存在。我确实有一个 MyApp.exe。

我在想也许 CS-Script 使用了某种机制,将我的 EXE 视为 DLL,这就是它之前工作的原因(当时我没有使用这个工具)但是在调用时CSScript.Load我得到了错误:

我知道该文件不存在,这应该不足为奇,但我确定这曾经可以工作,所以我想我的 Visual Studio 项目设置可能有问题。我尝试创建这样的 DLL,但由于名称空间相似,它与正在运行的 EXE 发生冲突。我也尝试将指令更改为,//css_reference MyApp.exe;但这也没有用。

我的问题是,如何使用 CS-Script 从脚本中引用正在运行的应用程序 (MyApp.exe) 中包含的类和方法?

0 投票
2 回答
543 浏览

.net - 为什么我在尝试本地安装 cs-script 时出错?

  • 您从网站下载 CS-Script 包
  • 安装说明说将文件解压缩到您想要的位置,然后运行css_config.exe以安装软件包。
  • 但是,如果您运行更高版本的 .NET,您可能会看到一个消息框,上面写着:

    System.IO.FileLoadException:无法加载文件或程序集 'file:///X:\Path\To\cs-script\csws.exe' 或其依赖项之一。不支持操作(HRESULT 异常:0x80131515)
    文件名:'file:///X:\Path\To\cs-script\csws.exe' --> System.NotSupportedException:
    尝试加载程序集来自网络位置,这会导致程序集在以前版本的 .NET Framework 中被沙盒化。默认情况下,此版本的 .NET Framework 不启用 CAS 策略,因为这种加载可能很危险。如果此负载不打算对组件进行沙箱化,请启用 loadFromRemoteResources 开关。有关更多信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=155569 System.Reflection.RuntimeAssembly...

发生了什么?为什么它调用本地文件,解压缩到本地磁盘,远程文件

我能做些什么?

0 投票
1 回答
99 浏览

caching - 如何使用并发 Web 用户处理重置 CS-Script

使用 CSScript.Evaluator.Reset() 时,这会重置当前使用相同脚本或构建的其他任何人吗?

问我问题的另一种方式。脚本 = CSScript.Evaluator.LoadCode(scriptString); 如果另一个用户通过并调用相同的代码,但发生了错误。原来的编译仍然是好的和安全的吗?

CSScript.Evaluator.AutoResetEvaluatorOnError = true,这似乎不起作用。在我导致代码错误之后,然后修复它。在我重置我的应用程序或使用 Reset() 之前,编译将无法工作。

使用重置是有效的,但这就是我最初提出问题的原因。

我正在使用 CSScript.Evaluator.LoadCode 并查看 CSScript.Evaluator.LoadMethod,但遇到了同样的问题。

这些不是巨大的脚本,但可以大批量或循环运行。不反对唯一命名,因为无论如何我都会为每次运行构建。但我不确定缓存是否正常工作。

当启用 CSScript.CacheEnabled 时,缓存文件夹的位置在哪里?

0 投票
1 回答
257 浏览

c# - C# compiling source files as plugins

i want to make plugin support for my program

the goal is to make it compile files in plugin folder and launch few methods but i can get it working

my current progress using CSScriptLibrary :

but it throws exception :

the addon file :

i dont think resmanager class is important anyways want to pass instance of it to load function so it can change things on original program

0 投票
1 回答
231 浏览

c# - JScript 中的异步

我最近注意到,我用来编译和使用 C# 文件(如我的应用程序中的脚本)的库(CSScript)也可以编译 VB 和 JScript。我的一个应用程序使用了 await/async (C# 5),这在 JScript 中是否存在?我似乎无法使用谷歌找到任何东西。

0 投票
0 回答
607 浏览

c# - 通过脚本控制 WPF c# 应用程序

我正在分析是否可以使用脚本/宏来控制我的应用程序。

我的应用程序是用 c#/VS2015 编写的 WPF 应用程序,我正在尝试执行以下操作(伪代码)

该脚本应该能够访问 IExposedTasks 中的所有数据并执行以下操作:

脚本的语言可以是 c#、JavaScript 或 VB。

我曾尝试使用 Cs-Script 执行此操作,但它似乎不适用于 Win10/VS2015。

COM 不是替代品。

谁能指出我正确的方向?

提前致谢!