3

假设我想写一个小程序,我们可以给它一个 .CS 文件,它可以为我们编译它并告诉我们是否有任何编译错误。所以我为此使用了 CodeDom。当我想使用 CodeDOM 时,我必须添加 DLL 名称,以便在运行时加载它们。像这样的东西:

    CompilerParameters parameters = new CompilerParameters();
    parameters.ReferencedAssemblies.Add("System.dll");
    parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");

但是这种方法存在一些问题:如何确保包含所有必要的 DLL?这是唯一的方法吗?有没有更好的方法来代替像这样添加这些 DLL?

谢谢。

4

2 回答 2

4

你不需要硬编码任何东西。想象一下循环调用Add(),使用从文本文件中读取的 DLL 名称 - 或者在运行时在目录中找到,就此而言。您拥有编写非常灵活的东西所需的所有工具。

于 2012-06-04T14:24:34.370 回答
3

如果通过硬编码您的意思是明确指定要包含的 dll(无论它们来自文本文件还是源文件),那么 CodeDom 没有任何方法可以确定该源正在使用哪些库,因为具有给定名称的类可以存在在“任何”程序集中。因此,作为开发人员,您必须指定您所指的程序集。

在您的情况下,如果您将源作为输入,您也可以要求输入器指定引用的库。你不能可靠地猜到它们。

于 2012-06-04T14:26:06.873 回答