【发布时间】:2014-07-16 07:54:17
【问题描述】:
我正在寻找有关如何最好地将外部程序集视为分发和加载的一部分的指导。
基本情况是,我一直在开发一个旨在与另一个已安装程序交互的程序。 另一个程序具有开放的.Net API,旨在与我自己的第三方应用程序交互,但它会定期更新。 这些更改并不总是破坏性更改,但这通常会迫使我更新自己的应用程序并为公众发布一个版本。
我考虑的三个主要概念是:
使用我自己的应用程序打包仅包含 API 的外部程序集。 考虑的缺点是:增加发行版大小。强制检查已安装的外部应用程序的二进制文件和 API 二进制文件的本地副本,并尝试更新它们以保持同步。
直接从外部安装文件夹中的外部程序集加载它们。 考虑的缺点是:如果外部应用决定更新二进制文件,则锁定它们。
将外部程序集复制到一个临时文件夹,然后从那里加载它们。 考虑的缺点是:复制数十个文件(包括资源程序集)以及可能将它们留在临时文件夹中所花费的时间。
是否有最佳实践或其他公认的方法?
编辑:我应该指出我的应用程序使用 WPF。
【问题讨论】:
-
我刚刚仔细查看了 AppDomainSetup.ShadowCopyDirectories,但我不确定这是否适合来自不同位置的 两组 组程序集。本地引用的程序集和外部程序集都需要由应用程序加载。 AppDomainSetup 似乎只适用于一组。我必须手动加载本地引用的程序集,以免引发 File Not Found Exception。
标签: c# .net assemblies