jjzjj

javascript - 在运行时解释和/或接收 dotNet 代码

Html可以包含嵌入其中的少量Javascript(例如在onclick事件处理程序中定义)。如果我使用像C#这样的dotNet语言编写一个Html浏览器,我可以使用什么技术或API来运行这样的Javascript片段,前提是我直到运行时才收到它(并且接收它作为字符串数据,而不是可执行代码)?如果要运行的代码是C#片段而不是Javascript,是更容易还是更难?是否有任何技术不需要我的代码具有不寻常的特权?例如,像CodeCompiler.FromSource这样的方法需要SecurityPermissionFlag.UnmanagedCode(在我看来这太过分了:我不明白为什么编译

vb.net - CodeDom编译错误 'Forms' is not member of 'Windows' in Windows 8.1

我正在使用CodeDom创建InMemoryexe。这适用于Windows8及以下版本。如果我删除表单声明,编译后的代码在Windows8.1中工作,但我不想这样做。有任何想法吗?Windows7-一切正常,Windows8-一切正常,Windows8.1-无需声明表单即可工作。引用框架provOptions.Add("CompilerVersion","v4.0")CodeDom引用程序集:vbParams.ReferencedAssemblies.Add("mscorlib.dll")vbParams.ReferencedAssemblies.Add("System.dll")vb

c# - CompileAssemblyFromDom 抛出 FileNotFoundException

我构建了一个CodeCompileUnit,下面的代码输出了一个C#源代码文件,一个.dll,我可以从程序集中获取一个实例:TextWritertw=newIndentedTextWriter(newStreamWriter(filePath+".cs",false),"");provider.GenerateCodeFromCompileUnit(compileUnit,tw,newCodeGeneratorOptions());tw.Close();CompilerParameterscp=newCompilerParameters{GenerateInMemory=true,Ge

c# - 卸载 CodeDom 编译的程序集

我有一些在运行时编译的C#代码(我们称它为“脚本”)。它在我用来访问其功能的主程序中使用了一个接口(interface)。编译完成后,我有CompilerResults.CompiledAssembly,在这种情况下,我可以CreateInstance(Type)。一旦我使用完脚本,我想完全卸载。据我了解,如果我创建一个单独的应用程序域,我只能这样做:LoadingDLLsintoaseparateAppDomain我有一些关于我的实现的问题:如果我有多个脚本要编译并想独立卸载它们,我是否必须为每个脚本创建单独的应用程序域?我应该使用哪些应用域名?GUID是个好主意吗?是否有任何我应该

c# - 如何以编程方式解析和修改 C# 代码

我想做的是阅读C#代码,解析它,插入一些方法调用并最终编译它。是否可以将C#源代码(字符串列表)转换为CodeDOM对象? 最佳答案 这是一个非常古老的问题,但值得注意的是,已接受的答案不再适用。微软最近Roslyn项目明确旨在公开编译器在静态分析代码库的过程中获得的有关您的代码库的所有知识,并通过托管API公开所有这些信息供您利用。它适用于VB和C#。由于您要使用静态分析信息,因此需要Microsoft.CodeAnalysisNuGet包(C#所需的东西在Microsoft.CodeAnalysis.CSharp命名空间下),有

c# - 使用 .NET 的 CodeDom 创建枚举

我想使用CodeDomAPI创建枚举。我在Internet上进行了足够多的搜索,但得到的结果几乎没有任何用处。我要生成的是publicenumbug_tracker_type{[Description("Bugzilla")]Bugzilla,[Description("Debbugs")]Debbugs,[Description("PHPProjectBugtracker")]PHP_Project_Bugtracker,[Description("GoogleCode")]Google_Code}我使用了CodeTypeDeclaration并将它的IsEnum属性设置为true,

C# CodeDom 自动属性

我有一个使用CodeDom创建的属性。如何将其设置为自动属性,而不是针对私有(private)成员添加CodeFieldReferenceExpressions? 最佳答案 IIRC,CodeDom根本无法表达这一点。自动实现的属性只是编译器的糖分,但由于它没有(干净地)映射到所有语言,所以它不能完全适合CodeDom(此外,CodeDom需要更新)。 关于C#CodeDom自动属性,我们在StackOverflow上找到一个类似的问题: https://st

c# - 解析 C# 代码(作为字符串)并插入其他方法

我有一个正在开发的C#应用程序,它可以远程加载它的代码,然后运行它(为了论证,您可以假设该应用程序是安全的)。代码是C#,但它作为XML文档发送,解析为字符串,然后编译和执行。现在,我想做的-比我预期的要困难一些-能够解析整个文档,并在编译之前,在每行执行后插入额外的命令。例如,考虑以下代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;namespaceMyCode{staticclassMyProg{staticvoidRun(){inti=0;i++;Log(i);}}}我想要的,在解析之后更像是:usi

c# - CodeDom 泛型类型约束

有没有办法用CodeDom生成类约束。因为当我使用类似的东西时varmethod=newCodeMemberMethod();vargenericParam=newCodeTypeParameter("InterfaceType");genericParam.Constraints.Add("class");method.TypeParameters.Add(genericParam);生成的代码是这样的privateInterfaceTypeGetImpl()whereInterfaceType:@class{}我发现最好的解决方法是在课前使用前导空格genericParam.Con

c# - 如何使用代码生成动态创建C#方法?

为了在C中定义一个可由Lua调用的方法,它必须匹配给定的签名并使用LuaAPI来检索参数并返回结果。我正在编写Lua的C#包装器,我对能够调用任意C#方法而不使它们遵循这些约定感兴趣。当用D之类的东西包装时,可以使用模板系统为任何给定方法动态创建此胶水代码。我当时认为这在C#中也可能实现,但需要使用动态代码生成。CAPI看起来像这样,生成的代码将通过我的库的较低级别部分来操作它,它P/InvokesLuaC库。staticintfoo(lua_State*L){intn=lua_gettop(L);/*numberofarguments*/lua_Numbersum=0;inti;fo