引用dll,不包含visual studio 2015版本
本文关键字:visual studio 2015版本 包含 dll 引用 | 更新日期: 2023-09-27 18:22:06
我有一个应用程序正在引用一个dll,该dll将不断更改为新版本(具有向后兼容性)。
我的应用程序(内置于visual studio 2015)将适用于任何版本-问题是-我需要在不指定版本的情况下引用dll bec最新版本的dll将不断替换我的项目中的dll(办公室要求),我不想每次更新dll时都重新编译我的项目
我尝试了以下方法:
-
在.csproj文件中设置
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
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; };
我真的不知道该把我试过的第二件东西放在哪里,但似乎什么都不起作用!!
更简洁的方法是使用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...
}
}
工作。。。但我喜欢更好的答案