2011-04-11 198 views
2

我有以下问题,稍后会尽量描述一下。visual studio 2010 c#winform运行时编译

在我的程序中,可以通过点击一个按钮来编译winform到.exe。

现在我试着用CodeDom中做到这一点,所以在我的节目,我有以下行:

CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, text); 

其中codeProvider是CodeDomProvider和文本是从哪儿来编译源。

问题是我需要保存的winform,因为.exe有一个使用其他类和表单的类,因为参数'text'是一个字符串参数,它必须包含所有这些类,结果大量的代码,更不用说大量的错误。 Here就是我的意思。

必须有其他方式,问题是,它们是什么?提前致谢!

+2

您试图解决什么问题? – jfs 2011-04-11 06:41:32

+0

如果您告诉我们业务需求是什么,我相信我们可以找到更好的解决方案来解决您的问题。 – 2011-04-11 06:45:28

回答

1

如果您总是使用相同的一组类,那么将这些常见的类放入类库中并引用来自动态编译的代码将是值得的。

如果他们是而不是在每种情况下都是一样的,很难看到你期望的改进 - 如果需要编译多少代码,它必须被编译,并且有很多代码可能会出错它。

+0

这套课程是一样的,我会尽量遵循你的建议,谢谢! – 2011-04-11 07:33:36

+0

@Jon Skeet很抱歉回到问题,但我再次被卡住了。我创建了一个类库,当我从我的主项目中调用它时,创建一个对象,一切都很好。但是,如何使用CodeDom将它传递给动态编译的代码?我如何将它添加为从何处编译的源代码?请记住构造函数应该带一个参数,所以它看起来像这样:'CodeToCompile.TForm test = new CodeToCompile.TForm(TestElement.PanelsWithTestElements);' 非常感谢! – 2011-04-14 17:58:36

+0

@ tube-builder:在传递给CompileAssemblyFromSource的CompilerParameters中添加一个引用。我不知道构造函数在什么地方进入你的问题...... – 2011-04-14 18:00:48

相关问题