引用dll,不包含visual studio 2015版本

本文关键字:visual studio 2015版本 包含 dll 引用 | 更新日期: 2023-09-27 18:22:06

我有一个应用程序正在引用一个dll,该dll将不断更改为新版本(具有向后兼容性)。

我的应用程序(内置于visual studio 2015)将适用于任何版本-问题是-我需要在不指定版本的情况下引用dll bec最新版本的dll将不断替换我的项目中的dll(办公室要求),我不想每次更新dll时都重新编译我的项目

我尝试了以下方法:

  1. 在.csproj文件中设置<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

  2. AppDomain.CurrentDomain.AssemblyResolve += delegate (object s, ResolveEventArgs re)
    {
        AssemblyName theName = new AssemblyName(re.Name);
        if (theName.Name == "name, version, key")
        {
            return Assembly.LoadFile("name without version");
        }
        return null;
    };
    

我真的不知道该把我试过的第二件东西放在哪里,但似乎什么都不起作用!!

引用dll,不包含visual studio 2015版本

更简洁的方法是使用AssemblyResolve事件-

类似以下内容:

AppDomain.CurrentDomain.AssemblyResolve += (sender, argsAssembly) =>
            {
                if (argsAssembly.Name.StartsWith the name of your dll)
                    return Assembly.Load(load the dll);
                return null;
            };

用一种方法解决了这个问题,但我仍在寻找更好的答案-

我通过加载dll 从程序集中创建了一个类

类似-

Assembly assemblyInstance=Assembly.Load(dll);
Type[] asseblyTypes=assemblyInstance.GetTypes();
foreach(Type t in asseblyTypes)
{
    if(t.fullName.Equals(name of class i want))
    {
        try to get the method info by t.GetMethod(name,type of parameter)
        and then do methodInfo.Invoke...
    }
}

工作。。。但我喜欢更好的答案