当前位置: 首页 > 编程语言 > C#

如何切换.NET程序集执行方法?分享

时间:2023-04-10 21:57:38 C#

如何切换.NET程序集执行方法?我的.NET应用程序有不同版本的dll,大多数时候我想使用最新版本的dll。但是,有一种方法可以在单独的线程上运行它,我需要能够根据某些标准选择旧版本的dll。我已经知道在默认AppDomain中只能加载然后卸载一个程序集(我不能只加载两个版本,因为那样我会遇到类型问题的重复定义)可能我必须创建一个单独的AppDomain,其中程序集被加载然后被卸载。这个应用程序域将在一个单独的线程上执行一个方法,并且可以使用不同版本的库。你认为这是一个好方法吗/你有更好的主意/你能给我一些资源让我开始吗?非常感谢;)尝试这样的事情:classProgram{staticvoidMain(string[]args){System.Typeactivator=typeof(ApplicationProxy);AppDomaindomain=AppDomain.CreateDomain("friendlyname",null,newAppDomainSetup(){ApplicationName="applicationname"});ApplicationProxyproxy=domain.CreateInstanceAndUnwrap(Assembly.GetAssembly(activator).FullName,activator.ToString())asApplicationProxy;代理.DoSomething();AppDomain.Unload(域);}}并创建一个代理类(必须从MarshalByRefObject继承)输入yourOldClass=oldVersion.GetType("namespace.class");//这是一个示例:您需要在下面正确定义参数yourOldClass.InvokeMember("OldMethod",BindingFlags.Public,null,null,null);为什么不覆盖新库以使用不同的方法来获取旧版本的代码并在需要时调用它?ppublicvoidMyNewMethod(){}publicvoidMyLegacyMethod(){}也许你可以使用外部别名,看看what-use-the-aliases-property-of-assembly-references-in-visual-studio-8你应该能够使用两个版本的程序集指定别名并在代码中使用相同的前缀。以上就是C#学习教程:如何切换.NET程序集执行一个方法?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: