2

我有一个应用程序,它引用程序集“Library.dll”。我将此程序集的名称更改为“Library222.dll”,现在我的应用程序失败并出现异常“无法加载文件或程序集......”如何在运行时指定此 dll 文件的新名称“Library222.dll”?我发现了这个问题Set Custom Path to Referenced DLL's? 但那里指定文件夹到 dll,而不是文件名。我没有更改dll的路径,我更改了文件名,所以我需要指定文件名。

4

3 回答 3

5

您不能仅通过重命名程序集来实现此目的。

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

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

于 2013-09-30T12:13:23.283 回答
2

试试这个去项目属性-> 应用程序,然后更改程序集名称字段。在早期版本中,它可能位于不同的位置,但我认为该Assembly Name字段仍然是您要查找的字段。

于 2014-11-05T12:13:52.853 回答
2

我找到了这个简单的解决方案!活动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;
        }
    }
}
于 2013-09-30T12:34:43.843 回答