将自定义文件名设置为引用的 dll
本文关键字:引用 dll 设置 自定义 文件名 | 更新日期: 2023-09-27 18:33:16
>我有一个应用程序,它引用了程序集"Library.dll"。我将此程序集的名称更改为"Library222.dll",现在我的应用程序失败,出现异常"无法加载文件或程序集..."如何在运行时指定此dll文件的新名称" Library222.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
字段仍然是您要查找的字段。