资源dll 还是用 VC去创建吧。那个更方便而且简单

解决方案 »

  1.   

    是使用reflect 反射之类的创建程序集吧。等高人。。
      

  2.   

    System.Reflect.Emit类里面可以调用IL生成DLL
      

  3.   

     
    using System;
    using System.Reflection;
    using System.Reflection.Emit;
    using System.Threading;class LocalBuilder_Sample
    {
        public static void Main()
        {
            // Create an assembly.
            AssemblyName myAssemblyName = new AssemblyName();
            myAssemblyName.Name = "SampleAssembly";        AssemblyBuilder myAssembly = 
               Thread.GetDomain().DefineDynamicAssembly(myAssemblyName, 
                   AssemblyBuilderAccess.RunAndSave);        // Create a module. For a single-file assembly the module
            // name is usually the same as the assembly name.
            ModuleBuilder myModule = 
                myAssembly.DefineDynamicModule(myAssemblyName.Name, 
                    myAssemblyName.Name + ".dll", true);        // Define a public class 'Example'.
            TypeBuilder myTypeBuilder = 
                myModule.DefineType("Example", TypeAttributes.Public);        // Create the 'Function1' public method, which takes an integer
            // and returns a string.
            MethodBuilder myMethod = myTypeBuilder.DefineMethod("Function1",
               MethodAttributes.Public | MethodAttributes.Static, 
               typeof(String), new Type[] { typeof(int) });        // Generate IL for 'Function1'. The function body demonstrates
            // assigning an argument to a local variable, assigning a 
            // constant string to a local variable, and putting the contents
            // of local variables on the stack.
            ILGenerator myMethodIL = myMethod.GetILGenerator();        // Create local variables named myString and myInt.
            LocalBuilder myLB1 = myMethodIL.DeclareLocal(typeof(string));
            myLB1.SetLocalSymInfo("myString");
            Console.WriteLine("local 'myString' type is: {0}", myLB1.LocalType);        LocalBuilder myLB2 = myMethodIL.DeclareLocal(typeof(int));
            myLB2.SetLocalSymInfo("myInt", 1, 2);
            Console.WriteLine("local 'myInt' type is: {0}", myLB2.LocalType);        // Store the function argument in myInt.
            myMethodIL.Emit(OpCodes.Ldarg_0 );
            myMethodIL.Emit(OpCodes.Stloc_1 );        // Store a literal value in myString, and return the value.
            myMethodIL.Emit(OpCodes.Ldstr, "string value"  );
            myMethodIL.Emit(OpCodes.Stloc_0 );
            myMethodIL.Emit(OpCodes.Ldloc_0 );
            myMethodIL.Emit(OpCodes.Ret );        // Create "Example" class.
            Type myType1 = myTypeBuilder.CreateType();
            Console.WriteLine("'Example' is created.");        myAssembly.Save(myAssemblyName.Name + ".dll");
            Console.WriteLine( "'{0}' is created.", myAssemblyName.Name + ".dll" );        // Invoke 'Function1' method of 'Example', passing the value 42.
            Object myObject2 = myType1.InvokeMember("Function1", 
                BindingFlags.InvokeMethod, null, null, new Object[] { 42 });        Console.WriteLine("Example.Function1 returned: {0}", myObject2);
        }
    }
    /* This code example produces the following output:local 'myString' type is: System.String
    local 'myInt' type is: System.Int32
    'Example' is created.
    'SampleAssembly.dll' is created.
    Example.Function1 returned: string value
     */