Could not load file or assembly 'file:///C:\Users\Echo\AppData\Local\Temp\ocoe1m3m.dll' or one of its dependencies. 系统找不到指定的文件代码如下:using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Reflection;
using System.CodeDom;
[Test]
        public void TestReflection()
        {
            StringBuilder strBd = new StringBuilder();            strBd.Append("public    class    DynamicClass \n");
            strBd.Append("{\n");            // 创建属性。       
            strBd.Append(propertyString("aaa"));
            strBd.Append(propertyString("bbb"));
            strBd.Append(propertyString("ccc"));
            strBd.Append("}");
            strBd.Append("}");            // 创建编译器实例。       
            CSharpCodeProvider provider = new CSharpCodeProvider();
            // 设置编译参数。       
            CompilerParameters paras = new CompilerParameters();
            paras.GenerateExecutable = false;
            paras.GenerateInMemory = true;            // 编译代码。       
            CompilerResults result = provider.CompileAssemblyFromSource(paras,strBd.ToString());            // 获取编译后的程序集。       
            Assembly assembly = result.CompiledAssembly;            object Class1 = assembly.CreateInstance("DynamicClass");
            ReflectionSetProperty(Class1, "aaa", 10);
            ReflectionGetProperty(Class1, "aaa");            object Class2 = assembly.CreateInstance("DynamicClass");
            ReflectionSetProperty(Class1, "bbb", 20);
            ReflectionGetProperty(Class1, "bbb");
        }
        private static string propertyString(string propertyName)
        {
            StringBuilder sbProperty = new StringBuilder();
            sbProperty.Append(" private    int    _" + propertyName + "    =    0;\n");
            sbProperty.Append(" public    int    " + "" + propertyName + "\n");
            sbProperty.Append(" {\n");
            sbProperty.Append(" get{    return    _" + propertyName + ";}    \n");
            sbProperty.Append(" set{    _" + propertyName + "    =    value;    }\n");
            sbProperty.Append(" }");
            return sbProperty.ToString();
        }        private static void ReflectionSetProperty(object objClass, string propertyName, int value)
        {
            PropertyInfo[] infos = objClass.GetType().GetProperties();
            foreach (PropertyInfo info in infos)
            {
                if (info.Name == propertyName && info.CanWrite)
                {
                    info.SetValue(objClass, value, null);
                }
            }
        }        private static void ReflectionGetProperty(object objClass, string propertyName)
        {
            PropertyInfo[] infos = objClass.GetType().GetProperties();
            foreach (PropertyInfo info in infos)
            {
                if (info.Name == propertyName && info.CanRead)
                {
                    System.Console.WriteLine(info.GetValue(objClass, null));
                }
            }
        } 

解决方案 »

  1.   

    这个地方报错,result.CompiledAssembly;Could not load file or assembly 'file:///C:\Users\Echo\AppData\Local\Temp\ocoe1m3m.dll' or one of its dependencies. 系统找不到指定的文件
    ----------------------------------------------------
      // 获取编译后的程序集。       
      Assembly assembly = result.CompiledAssembly;
      

  2.   

     // 创建属性。   
      strBd.Append(propertyString("aaa"));
      strBd.Append(propertyString("bbb"));
      strBd.Append(propertyString("ccc"));
      strBd.Append("}");
      strBd.Append("}");
    ....
    去掉一个strBd.Append("}");
      

  3.   

    if (result.Errors.HasErrors)
    加个判断,看看编译是不是报错了。
      

  4.   


    看看C:\Users\Echo\AppData\Local\Temp下面有没有ocoe1m3m.dll这个文件吧,你生成dll的时候路径要指定一下
      

  5.   

    是多了个},可以过了这个DynamicClass的生成的路径在哪里啊,如何指定生成的类的路径啊??
      

  6.   

    如果在这个DynamicClass的字符串有个方法run“public void run{}”,反射出来这个类,改如何调用这个方法啊??object Class1 = assembly.CreateInstance("DynamicClass");
       ReflectionSetProperty(Class1, "aaa", 10); // 设置属性值
       ReflectionGetProperty(Class1, "aaa"); // 取得属性值
    // 如何调用run啊???
      

  7.   

    自己去MSDN查CompilerParameters 类的说明。