问题标签 [compileassemblyfromsource]

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 投票
1 回答
816 浏览

system-codedom-compiler - 编译后访问类和函数(CompiledAssembly)

这是一些示例代码。我成功地弄清楚了如何编译它。我抓住了这个位置,并能够使用 Visual Studios 对象浏览器来查看 DLL。我不知道如何获取一个类实例并调用一个函数。

0 投票
4 回答
14222 浏览

c# - 如何防止 CompileAssemblyFromSource 泄漏内存?

我有一些 C# 代码使用 CSharpCodeProvider.CompileAssemblyFromSource 在内存中创建程序集。程序集被垃圾回收后,我的应用程序使用的内存比创建程序集之前更多。我的代码在 ASP.NET Web 应用程序中,但我在 WinForm 中复制了这个问题。我正在使用 System.GC.GetTotalMemory(true) 和 Red Gate ANTS Memory Profiler 来测量增长(示例代码约为 600 字节)。

从我所做的搜索来看,听起来泄漏来自新类型的创建,而不是来自我持有引用的任何对象。我发现的一些网页中提到了一些关于 AppDomain 的内容,但我不明白。有人可以解释这里发生了什么以及如何解决它吗?

这是一些泄漏的示例代码:

更新1:这个问题可能是相关的:Dynamically loading and unloading aa dll generated using CSharpCodeProvider

更新 2:试图更多地了解应用程序域,我发现:什么是应用程序域 - .Net 初学者的解释

更新 3:为了澄清,我正在寻找一种解决方案,它提供与上述代码相同的功能(编译并提供对生成代码的访问)而不会泄漏内存。看起来该解决方案将涉及创建新的 AppDomain 和封送处理。

0 投票
1 回答
836 浏览

c# - 防止 CompileAssemblyFromSource 生成具有重复文件名的临时文件

我的 WCF 应用程序使用在运行时编译的代码来计算报告的一些值。我正在使用 CSharpCodeProvider.CompileAssemblyFromSource 来编译代码。如果客户端(Silverlight 应用程序)在计算另一个报告时请求报告,CSharpCodeProvider.CompileAssemblyFromSource 会生成名称重复的临时文件,这会导致 IOException(“文件 'C:\Windows\TEMP\uviewdyd.out'存在。”)

有谁知道如何防止这种情况?

0 投票
1 回答
2953 浏览

c# - C# CompileAssemblyFromSource,添加它需要的引用程序集?

我有 CompileAssemblyFromSource 为仅引用我的程序(编译它)使用的程序集的代码工作。它工作得很好。

但是,如果我需要编译具有“使用废话”的代码;声明,它将无法找到 blah 并说它缺少资源。

因此,如果它是“System.Windows.Forms”,我说“compilerparams.ReferencedAssemblies.Add("System.Windows.Forms.dll")”,它就可以工作。

所以我可以解析代码文件并获取所有“使用”参数,但我怎么知道那些应该是“* .dll”添加,或者它们是其他地方的名称空间或诸如此类?.NET 有没有办法接受“System.Windows.Forms”并吐出“System.Windows.Forms.dll”,因为这是它需要的等等?

0 投票
1 回答
832 浏览

c# - .NET CompileAssemblyFromSource:确定哪个源失败?

我正在动态编译代码,使用CompileAssemblyFromSource多个源。

Errors如果出现编译错误,我可以从集合中检索行号等。

但是,行号是所有源中的行号。我需要的是来自失败源(在添加的源中)中的哪个源和行号。

不做计算杂技可以吗?

0 投票
0 回答
168 浏览

c# - 如何将现有类添加到 CodeProvider.CompileAssemblyFromSource 生成的 DLL?

我正在使用 codeProvider.CompileAssemblyFromSource 创建一个 dll,并将我的代码作为字符串传递。

我希望生成的 dll 包含另一个已经在我的代码中并且不会更改的类。

即,而不是这一行:

我想要一些谎言:

那可能吗?

0 投票
1 回答
736 浏览

dynamic - f# powerPack codeDom 中的“CompileAssemblyFromSource”

我正在尝试使用一个基本程序来动态编译和运行 f# 代码。我正在尝试运行以下代码:

从这个网站:http: //infsharpmajor.wordpress.com/2012/04/01/how-to-dynamically-synthesize-executable-f-code-from-text/

我遇到的问题是以下行:

我得到例外的地方:The System cannot find the file specified.

我已经包含了所需的参考资料Fsharp.compiler.codeDom.dllFsharp.compiler.dll但我不确定还有什么问题。我目前正在尝试CodeDom从 codeplex 获取 dll 源代码并逐步完成它,但如果有人能够看到我忽略的一些问题,它会为我省去很多麻烦。

谢谢你的时间,-Alper

0 投票
1 回答
408 浏览

c# - CompileAssemblyFromSource 测试对程序集进行签名

我有一个用 C# 编写的 Windows 服务。它动态生成 C# 代码并将它们编译为 abc.dll、xyz.dll 等程序集。这些程序集稍后将被加载以执行。编译时,我将 /keyfile: mykeyfile.snk" 作为编译器选项之一传递给 System.CodeDom.Compiler.CompilerParameters 类。现在的问题:其中一些程序集无法加载,因为强名称验证失败。

我从测试系统获得了生成的程序集,当我使用 sn、exe 检查它们时,我看到大约六分之一的程序集是延迟或测试签名的。运行 sn.exe -v xyz.dll 给我 xyz.dll 是延迟签名或测试签名的程序集。显然它将无法加载。

为什么有些程序集没有正确签名?

0 投票
0 回答
150 浏览

vb.net - 如何让 CompileAssemblyFromSource() 在调用程序中引用用户定义的类型

我成功地使用动态编译的程序集在运行时评估用户可定义的表达式。我的问题是关于如何将我自己程序中定义的类型的引用传递给 CompileAssemblyFromSource() 函数。目前,我被迫在用户可定义的表达式中使用“对象”,这会导致后期绑定。一旦我尝试在汇编代码中使用我自己的类型,我就会得到“错误 BC30002 - 类型 'cMyClass' 未定义”

我发现以下内容添加到听起来完全正确的参数中:

但这似乎根本没有帮助......

这是我尝试编译失败的示例函数:

如果我用 'object' 替换 'cMyClass' 一切都很好。

0 投票
1 回答
347 浏览

c# - 从包含源代码的字符串创建类对象

我正在创建一个 C# 应用程序,其中代码在运行时编译,代码包含在一个字符串中(字符串从 ScintillaNET 控件获取其值,它只返回文本,带有代码的字符串按预期工作)。

我的问题是:有没有办法在运行时从这个源代码制作某种类对象?例如,字符串包含以下值:

此代码由我的 CSharpCodeProvider 编译器在运行时编译(使用 CompileAssemblyFromSourceBatch - 因为我正在传递要编译的类数组)。但是,我希望能够在运行时设置编译器的 MainClass 属性,这需要从类中获取命名空间。

所以我正在考虑为每个类源代码字符串创建某种对象,这将使我能够实现我的目标。当然也欢迎任何其他想法。