7

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

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

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

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

4

1 回答 1

2
  1. 阅读文章运行时如何定位程序集
  2. 在编译代码之前,加载第 1 点中提到的位置中的所有程序集
  3. 加载所有程序集中的所有类型并保留命名空间字典,类型对
  4. 当在源代码中遇到 using 时,尝试从 3 中的字典中添加程序集的引用
于 2011-09-30T06:56:39.133 回答