没有版本 visual studio 2015 的参考 dll

Reference dll without version visual studio 2015

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

我的应用程序(内置于 visual studio 2015)将适用于任何版本 - 问题是 - 我需要在不指定版本的情况下引用 dll,因为最新版本的 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

从程序集中创建了一个 class

喜欢 -

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...
    }
}

有效...但我喜欢更好的答案

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

类似于以下内容:

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