开发中常引用一些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只是为了方便、统一。