首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

[动态编译]怎么在动态编译生成的动态库中添加图片资源及使用

2013-12-28 
[动态编译]如何在动态编译生成的动态库中添加图片资源及使用?public static void abc(){#region 要执行的

[动态编译]如何在动态编译生成的动态库中添加图片资源及使用?
public static void abc()
        {
            #region 要执行的代码

            string strCode = @" 
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
namespace aaa
{
    public class bbb
    {
        public static string ccc(string name)
        {
            return ""abc"";
        }
    }
}";
            #endregion
            #region 编译参数
            CompilerParameters objCompilerParams = new CompilerParameters();

            objCompilerParams.GenerateExecutable = false;   //编译成exe还是dll
            objCompilerParams.GenerateInMemory = false;           //是否写入内存,不写入内存就写入磁盘
            objCompilerParams.OutputAssembly = "E:\\abc.dll";         //输出路径
            objCompilerParams.IncludeDebugInformation = false; //是否产生pdb调试文件      默认是false
            objCompilerParams.ReferencedAssemblies.Add("System.dll");
            objCompilerParams.ReferencedAssemblies.Add("System.Core.dll");

            //编译器选项:编译成(存储在内存中)的DLL
            /*objCompilerParams.CompilerOptions = "/target:library /optimize";
            //编译时在内存输出 
            objCompilerParams.GenerateInMemory = true;
            //不生成调试信息 
            objCompilerParams.IncludeDebugInformation = false;*/
            #endregion
            #region 编译
            //创建编译类
            CSharpCodeProvider objCompiler = new CSharpCodeProvider();
            //进行编译
            CompilerResults objCompileResults = objCompiler.CompileAssemblyFromSource(objCompilerParams, strCode);
            #endregion
            #region 取得编译成程序集,准备执行程序集里的类中的方法
            //获取编译结果:程序集
            Assembly objAssembly = objCompileResults.CompiledAssembly;
            //获取编译成的程序集的信息
            /*object objMainClassInstance = objAssembly.CreateInstance("Program");
            Type objMainClassType = objMainClassInstance.GetType();*/
            #endregion
            #region 调用程序集中的类,执行类中的方法,得到结果
            /*objMainClassType.GetMethod("Main").Invoke(objMainClassInstance, null);
            objMainClassType.GetMethod("PrintWorld").Invoke(objMainClassInstance, null);*/
            #endregion

上面代码是动态编译生成一个DLL,生成没问题,现在DLL中的方法返回的是字符串!!如何在动态库中使用图片资源?例如上面的方法,我可以返回一个image  求大神帮忙


[解决办法]
objCompilerParams.EmbeddedResources.Add(filepath);
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
[解决办法]

objCompilerParams.EmbeddedResources.Add(fileName);


//获取资源中的图片

        protected Bitmap GetResImage(string resourceName)
        {
            Bitmap resImage = null;
            try
            {
                Stream stream = this.GetType().Assembly.GetManifestResourceStream(resourceName);

                if (stream != null)
                {
                    Bitmap bmp = new Bitmap(stream);
                    resImage = CloneBitmap(bmp);
                    bmp = null;
                    stream.Close();
                    stream = null;
                }
            }
            catch { }
            return resImage;

        }

热点排行