使用dependecies

时间:2016-11-30 09:51:51

标签: c# visual-studio dll dependencies

我有一个应用程序(让我们称之为A)从插件夹中加载DLL插件。我创建了一个插件dll(让我们称之为B)。我的插件dll是用C#编写的,并且有一些依赖项,如CEFSHARP DLL。如果我将所有CefSharp DLL所需的依赖项复制到Application A文件夹,则应用程序A可以加载我的插件dll B的唯一方法。我的问题是:

如何制作安装设置文件,以便将某些文件夹安装必要的依赖项,而应用程序A会知道它们在哪里?插件B在安装过程中不必转移到Plugins文件夹。它甚至可能吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果应用程序实现得很好,它应该带有app.config(这是Visual Studio中的名称)或myapp.exe.config(编译后的名称)文件,用于搜索依赖的DLL插件文件夹,如

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="plugins" />
    </assemblyBinding>
  </runtime>
</configuration>

然后,您的插件将并排放置所有依赖项,并且无需将它们放入应用程序的安装目录中。

使用InnoSetup,您可以按照以下方式执行此操作:

  • 让用户选择应用程序安装目录(理想情况下:使用Pascal脚本自动检测它,例如从Registry中检测,不要让用户选择它)
  • 将依赖项安装到所选目录中
  • 将插件安装到plugins子目录

以下是InnoSetup脚本的相关行:

[Setup]
DefaultDirName={pf}\App A
[Files]
Source: "./myplugin.dll"; DestDir: "{app}/plugins"; Flags: ignoreversion
Source: "./dependency.dll"; DestDir: "{app}"; Flags: ignoreversion