将自定义文件名设置为引用的 dll

本文关键字:引用 dll 设置 自定义 文件名 | 更新日期: 2023-09-27 18:33:16

>我有一个应用程序,它引用了程序集"Library.dll"。我将此程序集的名称更改为"Library222.dll",现在我的应用程序失败,出现异常"无法加载文件或程序集..."如何在运行时指定此dll文件的新名称" Library222.dll"?我发现了这个问题 将自定义路径设置为引用的 DLL?但是那里指定文件夹到DLL,而不是文件名。我没有将路径更改为dll,而是更改了文件名,因此需要指定文件名。

将自定义文件名设置为引用的 dll

仅通过重命名程序集无法实现此目的。

程序集的名称在编译时写入其元数据中。
更改文件名时,实际上不会更改元数据中的名称。

您必须取消引用 Library.dll,并引用 Library222.dll,然后重新编译。

我找到了这个简单的解决方案!AppDomain.AssemblyResolve的活动帮助我解决了问题

using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
namespace TestAsembly
{
    static class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
            //bla-bla...
        }
        static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            if (args.Name.StartsWith("Library,"))
            {
                Assembly asm = Assembly.LoadFrom("Library222.dll");
                return asm;
            }
            return null;
        }
    }
}

请尝试此操作,请转到"项目属性"-"应用程序">然后更改"程序集名称"字段。在早期版本上,它可能位于不同的地方,但我认为Assembly Name字段仍然是您要查找的字段。