我的WPF应用程序正在使用MahApps.Metro,它需要MahApps.Metro.dll
和system.windows.interactivity.dll
。如何将它们移动到文件夹,例如文件夹bin
并仍然使它们工作?如果我只是转移它们,应用程序根本不会启动。请帮忙!
答案 0 :(得分:1)
如果你单独留下所有这些DLL文件并让.NET Framework对它进行排序,那可能是最好的。如果必须移动它们,可以编辑引用的属性并将Copy Local
属性设置为false,这样在编译时就不会输出DLL文件。
在App.cs文件中(假设您正在使用C#)添加以下内容:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
}
Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (args.Name.StartsWith("MahApps.Metro"))
{
System.IO.BinaryReader stream = new BinaryReader(new FileStream("bin/MahApps.Metro.dll", FileMode.Open));
byte[] assembly = stream.ReadBytes((int)stream.BaseStream.Length);
return Assembly.Load(assembly);
}
return null;
}
编辑上面的代码以满足您的需求,以便它能够按照您希望的方式运行。
您必须验证您使用的所有DLL文件与目标文件的版本相同,否则.NET将引发异常。此外,DLL文件可能不存在,如果在网络位置使用它,加载流可能会引发一些问题。总而言之,它可能会起作用,但它可能不值得这么麻烦。