我们真的需要硬编码DLL

时间:2012-06-04 14:22:35

标签: c# codedom

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

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

但这种方法存在一些问题: 我怎样才能确保我已经包含了所有必需的DLL? 这是唯一的方法吗?有没有更好的方法,而不是像这样添加这些DLL?

感谢。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

如果通过硬编码你的意思是明确指定要包含的dll(无论它们来自文本文件还是源文件)那么没有任何方法可以让CodeDom找出这个源所使用的库,因为给定了一个类name可以存在于'any'程序集中。因此,您作为开发人员必须指定您所指的是哪些程序集。

在您的情况下,如果您将source作为输入,您可以要求inputer指定引用的库。你无法可靠地猜出它们。