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

时间:2011-09-30 02:49:08

标签: c# compileassemblyfromsource

我让CompileAssemblyFromSource适用于仅引用我的程序(编译它)使用的程序集的代码。它工作得很漂亮。

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

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

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

1 个答案:

答案 0 :(得分:2)

  1. 阅读文章How the Runtime Locates Assemblies
  2. 在编译代码之前加载在第1点中提到的位置中找到的所有程序集
  3. 在所有程序集中加载所有类型并保留命名空间字典,类型对
  4. 当在源代码中遇到使用时,尝试从3
  5. 中的字典添加程序集的引用
相关问题