.net C# 动态编译 cs2001 错误 处理

来源:互联网 发布:公司域名邮箱 编辑:程序博客网 时间:2024/05/18 19:19


使用下面代码:

 

var provider = CodeDomProvider.CreateProvider("cs");            // Create a code snippet to be used in the graph.            GenCodeFromMember(provider, new CodeGeneratorOptions());            var dd = typeof(ABCcs);            var 获取引用的程序集合 = dd.Module.Assembly.GetReferencedAssemblies();            //是否从全局应用程序缓存加载            //dd.Module.Assembly.GlobalAssemblyCache;            var resl= from an in 获取引用的程序集合                      let ass=  System.Reflection.Assembly.Load(an)                      select (ass.GlobalAssemblyCache? an.Name + ".dll"                          //引用外部dll "C:\mydll.dll"                      : "  /r \" " + an.Name + "\"");                      ;            CSharpExe codrun = new CSharpExe();            string code = @"   namespace Codes{public class TTTest {       public string NewJosn(object a) {           return Newtonsoft.Json.JsonConvert.SerializeObject(a);       }   }}";                    codrun.CompilerCparmae.ReferencedAssemblies.Clear();            //引用外部dll /reference:"C:\mydll.dll"            codrun.CompilerCparmae.ReferencedAssemblies.AddRange(resl.ToArray());            System.Reflection.Assembly dyAss = null;            ///动态生成程序集合            System.Linq.Enumerable.Range(1, 100).ToList().ForEach((o) => {                     var ddd = codrun.RunCode(code);                    var sb  = ddd;                    dyAss = ddd.CompiledAssembly;            });

编译错误如下:


修改为可以正确编码的代码

            var resl= from an in 获取引用的程序集合                      let ass=  System.Reflection.Assembly.Load(an)                      select (ass.GlobalAssemblyCache? an.Name + ".dll"                          //引用外部dll "C:\mydll.dll"                      :  "\""+ass.Location +"\"");                      ;



0 0