CompilerParameters.ReferencedAssemblies无法加入部分程序集引用
水言木 2009-04-09 11:07:07 大家好。我想用CodeDom来动态编译一个代码。因此要设置该代码要引用的程序集,但是像System.dll,和System.Xml.dll这些都可以直接用程序集名字来加,如下:
CompilerParameters options = new CompilerParameters();
options.ReferencedAssemblies.Add("System.dll");
options.ReferencedAssemblies.Add("System.Xml.dll");
但要是加System.Linq.dll这些就不行了,必须要用绝对路径才能加进去,如果像下面这样加:
options.ReferencedAssemblies.Add("System.Linq.dll");
就会出错编译错误(是动态编译时CompilerResults.Errors中的):Metadata file "System.Linq.dll" could not be found.
而只能用绝对路径。
这是什么原因呢?跟.net framework版本有关?这些程序集不都是在GAC中么?如果CodeDom编译时不会先从GAC中找程序集,为什么引用System.dll和System.Xml.dll这些就没有问题呢?
Thanks in advance.