开发中常引用一些dll,可以把Dll嵌入到exe,最终只生成一个exe文件,使用起来比较方便,避免不必要的Bug。
实现这个功能,只需要下面简单的步骤:
把dll放进Resources.resx文件中
在自动生成的Resources文件夹中设置
代码
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => { var assemblyName = Assembly.GetExecutingAssembly().GetName().Name; var nameSpace = assemblyName; //一般程序集名称和默认命名空间是一致的,当不一致的时候你可以用下面的方法。 //var nameSpace = typeof(Program).Namespace; var resourceName = string.Format("{0}.Resources.{1}.dll", nameSpace, new AssemblyName(args.Name).Name); using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { if (stream != null) { var assemblyData = new byte[stream.Length]; stream.Read(assemblyData, 0, assemblyData.Length); return Assembly.Load(assemblyData); } else { throw new FileLoadException(resourceName); } } };
就是这么简单。orz
dll放在其他文件夹,相同的操作也可以,放在Resources只是为了方便、统一。