一、制作模版Dll
二、在exe工程中添加Dll
1、添加上述“创建Dll”,并修改属性为:不复制到输出目录的嵌入资源
2、引用“Resource”中的dll文件,并修改属性:不复制到本地
三、添加重载Dll代码
1、添加以下代码
class DependentFiles
{
/// <summary>
/// 载入资源文件中附带的所有dll文件
/// </summary>
public static void LoadResourceDll()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs 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 System.IO.FileLoadException(resourceName);
}
}
}
}
2、在“Program”中注册使用
移动位置后,同样可以使用。但要注意看别人经验,对于远程等特殊情况,此方法可能失效。