因为使用了太多第三方类库导致dll文件成吨,管理上出现了很多麻烦。
参考资料:http://wenku.baidu.com/link?url=d6Xp7Q9f9daFoQyWzbv5DViOKCgMpYWKH0Mw_PRz6AuybKYLawh3dl6qW7Zi22Ax2LOpXnGJbnHBTU-FfHC8hw3BtvN1dM-3wL0WNf2-v9m
http://www.jb51.net/article/42144.htm
将动态链接库加入项目的Resources中。
在主函数所在的类的构造函数中进行如下处理:
static class Program
{
static Program()
{
//加载动态链接库失败时触发该事件
AppDomain . CurrentDomain . AssemblyResolve += CurrentDomain_AssemblyResolve;
}
static System . Reflection . Assembly CurrentDomain_AssemblyResolve(object sender , ResolveEventArgs args)
{
//获取加载失败的程序集的全名
switch (args . Name)
{
case "Emgu.CV, Version=2.9.0.1922, Culture=neutral, PublicKeyToken=7281126722ab4438":
{
return Assembly . Load(Properties . Resources . Emgu_CV);//加载资源文件中的dll,代替加载失败的程序集
//另一种读取资源的方法
//using (var stream = Assembly . GetExecutingAssembly() . GetManifestResourceStream("Emgu_CV.dll"))
//{
// var bytes = new byte[stream . Length];
// stream . Read(bytes , 0 , (int)stream . Length);
//}
}
default:
throw new DllNotFoundException(new AssemblyName(args . Name) . FullName);
}
}
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application . EnableVisualStyles();
Application . SetCompatibleTextRenderingDefault(false);
Application . Run(new MainForm());
}