【问题标题】:How to move DLL dependencies to another folder如何将 DLL 依赖项移动到另一个文件夹
【发布时间】:2015-07-04 10:09:07
【问题描述】:

我的 WPF 应用程序正在使用 MahApps.Metro,它需要 MahApps.Metro.dllsystem.windows.interactivity.dll。如何将它们转移到一个文件夹,例如文件夹 bin 并仍然使它们工作?如果我只是移动它们,应用程序将根本无法启动。请帮忙!

【问题讨论】:

  • 别这样,没有意义。必须添加一个 .config 文件以便您可以使用 <probing> 元素只是添加了一个故障模式。

标签: wpf vb.net dll dependencies mahapps.metro


【解决方案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 文件,加载流可能会引发一些问题。总而言之,它可能会起作用,但可能不值得这么麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多