是否可以从 .NET 中的父文件夹引用 DLL?
Is it possible to reference DLLs from parent folders in .NET?
我们有以下situation/requirements:
- 我们有多个项目使用相同的 DLL(我们开发的)。
- 不同的项目应该能够使用这些 DLL 的不同版本
- 同一个项目内的应用全部使用同一个版本
- 应该可以更新单个项目的 DLL,从而影响该项目中的所有应用程序。其他项目不受影响。
- 每个应用程序都应有自己的目录
这将导致以下所需的文件夹结构:
SomePath
|- SomeProject
| |- DLL
| |- Application1
| \- Application2
|
\- OtherProject
|- DLL
\- ...
为了让不同的项目使用不同的版本,在GAC中注册是不可能的(是吗?)。
使用 probing private path 解决方案也不可行,因为该方法仅支持子目录,不支持父文件夹。
据我了解,Assembly.LoadFrom
可以工作,但意味着通过反射调用(或不?)替换这些库中类型的每个 new
调用,这意味着大量工作.
有没有办法在不使用反射的情况下按指定引用 DLL? IE。指定父文件夹的相对包含路径。
提示:开发机器是Windows8.1,VS 2013;目标机器是 Windows 8.1
进一步研究后回答我自己的问题:
看起来在这种情况下唯一的选择是:
- 将共享 DLL 部署到每个应用程序目录或
- 说服系统工程师没有必要将每个应用程序都放入自己的目录中。如果所有应用程序都在同一目录中,则共享 DLL 可以放在该目录或任何子目录中。如果应用程序配置数据应该分开,这仍然可以在更多的子文件夹中完成。
我们选择了方式 #2。
我们有以下situation/requirements:
- 我们有多个项目使用相同的 DLL(我们开发的)。
- 不同的项目应该能够使用这些 DLL 的不同版本
- 同一个项目内的应用全部使用同一个版本
- 应该可以更新单个项目的 DLL,从而影响该项目中的所有应用程序。其他项目不受影响。
- 每个应用程序都应有自己的目录
这将导致以下所需的文件夹结构:
SomePath
|- SomeProject
| |- DLL
| |- Application1
| \- Application2
|
\- OtherProject
|- DLL
\- ...
为了让不同的项目使用不同的版本,在GAC中注册是不可能的(是吗?)。 使用 probing private path 解决方案也不可行,因为该方法仅支持子目录,不支持父文件夹。
据我了解,Assembly.LoadFrom
可以工作,但意味着通过反射调用(或不?)替换这些库中类型的每个 new
调用,这意味着大量工作.
有没有办法在不使用反射的情况下按指定引用 DLL? IE。指定父文件夹的相对包含路径。
提示:开发机器是Windows8.1,VS 2013;目标机器是 Windows 8.1
进一步研究后回答我自己的问题:
看起来在这种情况下唯一的选择是:
- 将共享 DLL 部署到每个应用程序目录或
- 说服系统工程师没有必要将每个应用程序都放入自己的目录中。如果所有应用程序都在同一目录中,则共享 DLL 可以放在该目录或任何子目录中。如果应用程序配置数据应该分开,这仍然可以在更多的子文件夹中完成。
我们选择了方式 #2。