在运行时更改.dll

指甲沙基洛夫

我有一个庞大的应用程序,其中我的解决方案的一个项目可以生成报告。我想添加新报告(更新报告)而不构建我的项目,而只是添加.dll文件。我阅读了AssemblyAppDomain,但是我不知道这是为新报告添加新dll以及如何在运行时更新旧报告的好方法吗?这是我的示例,它需要我的第一个dll,而第二次则不需要。第一个dll-总和,第二个-扣除。

    static void Main(string[] args)
    {
        try
        {
            //first domain
            AppDomain domain = AppDomain.CreateDomain("MyDomain");
            AssemblyDll asb1 = new AssemblyDll();
            Console.WriteLine(asb1.AssemblyMethod(1));
            AppDomain.Unload(domain);
            Console.ReadKey();

            //second domain
            AppDomain newDomain = AppDomain.CreateDomain("myNewDomain");
            AssemblyDll asb2 = new AssemblyDll();
            Console.WriteLine(asb2.AssemblyMethod(2));
            AppDomain.Unload(newDomain);
            Console.ReadKey();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

public class AssemblyDll
{
    public string AssemblyMethod(int version)
    {
        //loading .dll
        Assembly assembly = Assembly.LoadFrom(@"../../../../Assembly/DynamicDLL" + version + ".dll");
        Type type = assembly.GetType("DynamicDLL.Dynamic");
        object instance = Activator.CreateInstance(type);
        MethodInfo[] methods = type.GetMethods();
        //invoke method
        object result = methods[0].Invoke(instance, new object[] { 5, 3 });
        return result.ToString();
    }
}

我的.dll文件来自:

namespace DynamicDLL
{
    public class Dynamic
    {
        public int DynamicMethod(int a, int b)
        {
            return a + b;
            //return a - b;
        }
    }
}
MichaC

如果要编写类似插件和类似插件的方法,则应查看MEF http://msdn.microsoft.com/zh-CN/library/vstudio/dd460648.aspx

MEF允许您动态使用任何程序集,甚至可以将dll拖放到文件夹中并从中建立MEF目录。

实际上是Visual Studio,内部使用MEF来实现可扩展性(插件...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在运行时更改.dll

来自分类Dev

在运行时轻松替换dll

来自分类Dev

在运行时释放/删除* .dll

来自分类Dev

在运行时轻松替换dll

来自分类Dev

Wpf 在运行时加载 dll

来自分类Dev

在运行时无法识别对VSTOAddin.dll.config的更改

来自分类Dev

C#在运行时后期绑定卸载Dll

来自分类Dev

如何强制在运行时可访问dll

来自分类Dev

在运行时加载 C++ DLL

来自分类Dev

如何在运行时从 dll 引用静态类

来自分类Dev

在运行时从动态加载的dll创建对象列表

来自分类Dev

Visual Studio的设置,以在运行时删除对dll文件的依赖

来自分类Dev

在运行时编译程序集并将dll保存在文件夹中

来自分类Dev

尝试在运行时编译中引用注册表dll

来自分类Dev

在运行时创建dll文件在C#中不起作用

来自分类Dev

在运行时更新与Prism一起使用的DLL多数民众赞成

来自分类Dev

为什么在运行时找不到我的项目引用/使用的DLL?

来自分类Dev

检查是否在运行时从COM模块加载了WIN32 /非托管DLL

来自分类Dev

GLEW(OpenGL扩展牧马人):在运行时加载opengl dll吗?

来自分类Dev

当我尝试在运行时从psapi.dll(Windows)链接函数时,GetModuleFileNameExA将无法正常运行

来自分类Dev

使用运行时DLL(/ MD)避免DLL与运行时相关

来自分类Dev

标准库中是否存在某些内容或Boost是否可以在运行时编译dll?

来自分类Dev

在运行时不需要MSVCP120D.dll即可在VS中编译C ++

来自分类Dev

为什么重命名dll扩展名(即dllold)会在运行时导致FileNotFound异常?

来自分类Dev

当引用Newtonsoft.Json.dll时,在单声道下在运行时编译C#代码失败

来自分类Dev

NET Framework 4.7.2应用程序可以在运行时加载NET Core 5.0库DLL吗?

来自分类Dev

将我的 Unity 游戏中的类公开给同一个游戏在运行时加载的 DLL?

来自分类Dev

C# 'using system.X' 导入是在构建时编译还是在运行时从系统 DLL 中提取?

来自分类Dev

在运行时更改字段属性

Related 相关文章

  1. 1

    在运行时更改.dll

  2. 2

    在运行时轻松替换dll

  3. 3

    在运行时释放/删除* .dll

  4. 4

    在运行时轻松替换dll

  5. 5

    Wpf 在运行时加载 dll

  6. 6

    在运行时无法识别对VSTOAddin.dll.config的更改

  7. 7

    C#在运行时后期绑定卸载Dll

  8. 8

    如何强制在运行时可访问dll

  9. 9

    在运行时加载 C++ DLL

  10. 10

    如何在运行时从 dll 引用静态类

  11. 11

    在运行时从动态加载的dll创建对象列表

  12. 12

    Visual Studio的设置,以在运行时删除对dll文件的依赖

  13. 13

    在运行时编译程序集并将dll保存在文件夹中

  14. 14

    尝试在运行时编译中引用注册表dll

  15. 15

    在运行时创建dll文件在C#中不起作用

  16. 16

    在运行时更新与Prism一起使用的DLL多数民众赞成

  17. 17

    为什么在运行时找不到我的项目引用/使用的DLL?

  18. 18

    检查是否在运行时从COM模块加载了WIN32 /非托管DLL

  19. 19

    GLEW(OpenGL扩展牧马人):在运行时加载opengl dll吗?

  20. 20

    当我尝试在运行时从psapi.dll(Windows)链接函数时,GetModuleFileNameExA将无法正常运行

  21. 21

    使用运行时DLL(/ MD)避免DLL与运行时相关

  22. 22

    标准库中是否存在某些内容或Boost是否可以在运行时编译dll?

  23. 23

    在运行时不需要MSVCP120D.dll即可在VS中编译C ++

  24. 24

    为什么重命名dll扩展名(即dllold)会在运行时导致FileNotFound异常?

  25. 25

    当引用Newtonsoft.Json.dll时,在单声道下在运行时编译C#代码失败

  26. 26

    NET Framework 4.7.2应用程序可以在运行时加载NET Core 5.0库DLL吗?

  27. 27

    将我的 Unity 游戏中的类公开给同一个游戏在运行时加载的 DLL?

  28. 28

    C# 'using system.X' 导入是在构建时编译还是在运行时从系统 DLL 中提取?

  29. 29

    在运行时更改字段属性

热门标签

归档