我们有许多使用互操作和相关 DLL 的项目。所有项目都有单独的 DLL 引用和设置,但基本上它们都使用相同的 DLL。因此,如果在安装/卸载安装程序时有任何 DLL 注册/注销,则会多次产生问题。
此外,如果安装位置更改或 DLL 引用位置更改,上述方法可能会产生问题。
我们需要将 DLL 放在一个位置,并且所有项目都需要使用该位置的 DLL 引用以避免注册/注销问题。但想知道.net 中的实际引用如何用于依赖项。
我们怎么能做到这一点?有没有更好的解决方案或解决方法?
我们有许多使用互操作和相关 DLL 的项目。所有项目都有单独的 DLL 引用和设置,但基本上它们都使用相同的 DLL。因此,如果在安装/卸载安装程序时有任何 DLL 注册/注销,则会多次产生问题。
此外,如果安装位置更改或 DLL 引用位置更改,上述方法可能会产生问题。
我们需要将 DLL 放在一个位置,并且所有项目都需要使用该位置的 DLL 引用以避免注册/注销问题。但想知道.net 中的实际引用如何用于依赖项。
我们怎么能做到这一点?有没有更好的解决方案或解决方法?
就个人而言,我喜欢让我的所有应用程序都包含所有引用的 DLL,原因如下:
但是如果你真的需要一个位置,你可以在全局程序集缓存中注册 DLL。如果您使用像 Wix 这样的部署工具,这非常简单。或者,您可以使用自定义操作在 GAC 中进行注册
将程序集/互操作 dll 放入全局程序集缓存 (GAC)。
参考:
如何将非托管 dll 部署到 GAC
http://blogs.msdn.com/yizhang/archive/2007/06/17/how-to-deploy-unmanaged-dll-into-gac.aspx
全局程序集缓存
http://msdn.microsoft.com/en-us/library/yf1d93sz.aspx