是否可以从.NET中的父文件夹引用DLL?

时间:2015-02-18 11:01:21

标签: .net assemblies

我们有以下情况/要求:

  • 我们有多个项目使用相同的DLL(我们开发)。
  • 不同的项目应该能够使用这些DLL的不同版本
  • 一个项目中的应用程序都应使用相同的版本
  • 应该可以更新单个项目的DLL,以便该项目中的所有应用程序都受到影响。其他项目不受影响。
  • 每个应用程序都应有自己的目录

这会产生以下所需的文件夹结构:

SomePath
  |- SomeProject
  |     |- DLL
  |     |- Application1
  |     \- Application2
  |
  \- OtherProject
       |- DLL
       \- ...

为了允许不同的项目使用不同的版本,在GAC中注册它们是不可能的(是吗?)。 使用probing private path解决方案也是不可能的,因为该方法仅支持子目录,而不支持父文件夹。

据我了解,Assembly.LoadFrom可以正常工作,但意味着通过反射调用(或不反映?)替换这些库中类型的每个new调用,这意味着需要做很多工作。 / p>

有没有办法在不必使用反射的情况下引用指定的DLL?即指定父文件夹的相对包含路径。

提示:开发机器是Windows 8.1,VS 2013;目标机器是Windows 8.1

1 个答案:

答案 0 :(得分:0)

进一步研究后回答我自己的问题:

看起来这种情况下唯一的选择是:

  1. 将共享DLL部署到每个应用程序目录或
  2. 说服系统工程师无需将每个应用程序放入其自己的目录中。如果所有应用程序都在同一目录中,则共享DLL可以放在该目录或任何子目录中。如果应将应用程序配置数据分开,则仍可在其他子文件夹中完成此操作。
  3. 我们选择了#2。