我开发了一个应用程序,它使用c#脚本文件进行某些配置和设置.脚本文件包含各种用户生成的对象以及这些对象上的某些功能.目前,用户必须使用第三方编辑器生成.cs文件,并提供我的程序的路径以使用它.这种方法的缺点是用户在编辑脚本文件时没有自动完成和智能感知支持的灵活性.
我想将脚本编辑部分嵌入到我的应用程序中.我可以使用富文本编辑器来做到这一点.但编码自动完成部分是一个巨大的痛苦.有什么方法可以为用户提供程序内编辑器,也可以自动完成....
用于在程序中动态编译脚本的代码.
public String Compile(String inputfilepath)
{
CompilerResults res = null;
CSharpCodeProvider provider = new CSharpCodeProvider();
String errors = "";
if (provider != null)
{
try
{
Assembly asb = Assembly.Load("BHEL.PUMPSDAS.Datatypes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=81d3de1e03a5907d");
CompilerParameters options = new CompilerParameters();
options.GenerateExecutable = false;
options.OutputAssembly = String.Format(outFileDir + oName);
options.GenerateInMemory = false;
options.TreatWarningsAsErrors = false;
options.ReferencedAssemblies.Add("System.dll");
options.ReferencedAssemblies.Add("System.Core.dll");
options.ReferencedAssemblies.Add("System.Xml.dll");
options.ReferencedAssemblies.Add("System.Xml.dll");
options.ReferencedAssemblies.Add(asb.Location);
res = provider.CompileAssemblyFromFile(options, inputfilepath);
errors = "";
if (res.Errors.HasErrors)
{
for (int i = 0; i < res.Errors.Count; i++)
{
errors …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个类似于基于插件的系统的桌面应用程序.我有一个客户端模块,它将加载包含'Machine'对象的DLL.此后,"机器"对象被操纵并按照良好定义的接口使用.
棘手的部分是包含"机器"对象的DLL是通过使用另一个程序动态生成的.在它的核心,DLL生成应用程序接受用户输入,生成类,在c#代码文件(其中包含用户指定的字段,我没有任何先验知识),并将这些类编译为DLL(机器. DLL文件).
客户端程序获取此dll,动态加载它然后在此机器对象上运行.
我在为解决在Machine对象和Client程序之间传递数据的问题建模解决方案时遇到了很多麻烦,主要是因为我不知道机器对象中包含哪些数据.
客户端程序要做以下事情.
- 加载dll并实例化'machine'对象. - 调用"机器"对象中的一系列函数,这些函数通过接口为客户端所知. - 从"机器"对象中提取各种变量并将其显示给用户.
我无法执行最后一步.
注意:我编写了一个简单的解决方案,其中有关字段的元数据由dll生成程序生成并存储在xml文件中.客户端程序使用这些xml文件来获取有关存储在计算机对象中的字段的信息.然后,它使用机器对象上的反射来访问对象的字段.
我觉得这很麻烦而且很慢.这种东西有任何模式或方法吗?
我正在使用VSC开发html页面.使用emmet和VSC是一次非常棒的体验,但我经常发现我必须用div包装一组元素,但必须在一行上使用emmet,然后在末尾剪切粘贴结束标记.我要映射的元素集.
有什么方法可以使用emmet并自动将emmet的输出包装在一组选定的元素周围?
我在Postgresql中创建一个触发器,如下所示.
CREATE TRIGGER "PRODUCT_ADD_TRIGGER" AFTER INSERT
ON product FOR EACH ROW
EXECUTE PROCEDURE INVENTORY_ENTRY_NEW_PRODUCT(NEW.productcode);
COMMENT ON TRIGGER "PRODUCT_ADD_TRIGGER" ON product
IS '-- Executes a procedure that inserts a row into the inventorytxns table.';
Run Code Online (Sandbox Code Playgroud)
在pgAdmin-III的查询管理器中执行时,将引发以下错误.
ERROR: syntax error at or near "."
LINE 3: ... EXECUTE PROCEDURE INVENTORY_ENTRY_NEW_PRODUCT(NEW.productco...
^
********** Error **********
ERROR: syntax error at or near "."
SQL state: 42601
Character: 130
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我我的代码有什么问题.我到处搜寻.
编辑:要执行的过程的代码.此过程已成功添加到数据库中.
-- Function: "INVENTORY_ENTRY_NEW_PRODUCT"(integer)
-- DROP FUNCTION "INVENTORY_ENTRY_NEW_PRODUCT"(integer);
CREATE OR REPLACE FUNCTION "INVENTORY_ENTRY_NEW_PRODUCT"(productcode integer)
RETURNS record …
Run Code Online (Sandbox Code Playgroud) c# ×2
data-binding ×1
dll ×1
dynamic ×1
emmet ×1
html ×1
postgresql ×1
reflection ×1
scripting ×1
sql ×1
triggers ×1