从本地磁盘动态加载DLL

时间:2018-11-14 13:27:48

标签: c# .net reflection

虽然发生了编程,并且您在NuGet包中引用文件,但是具有依赖关系的编程并不是什么大问题,但是我对现有应用程序做了扩展应用程序,该应用程序基本上依赖于与主程序相同的dll文件。

现在,我不想将扩展名实际放置在我们的主应用程序目录中,因为使它具有通用性并让用户或管理员将其复制到他们喜欢的位置更加方便。

在伪代码中,编程时的代码如下:

using Newtonsoft.Json;
...
public void xyz()
{
    JsonSerializer ObjectSerializer = new JsonSerializer();
    ... Do Stuff ...
}

我可以完全确定在相关机器上的本地目录中拥有合适的dll文件,因此有注册表项可以读取实际路径。

无需动态地加载dll,代码可以正常运行, 但我希望这样的事情是可能的(in the Program.cs - without any using directives to 3rd party dlls!!! - namespace might be loaded anyway):

private static void Main(string[] args)
{
    string ProgramPath = FindProgramPath();
    System.Reflection.Assembly.LoadFrom(ProgramPath + @"System.Net.Http.Formatting.dll");
    System.Reflection.Assembly.LoadFrom(ProgramPath + @"Newtonsoft.Json.dll");
    ... Do Stuff
}

该逻辑是否应该包装在另一个文件中,该文件将在当前上下文中加载,或者作为一种资源来确保其余所需文件已相应加载?还是其他人知道一种独立于文件夹位置而不膨胀实际exe文件的方法吗?

0 个答案:

没有答案