开发自定义Powershell cmdlet,它对外部第三方程序集具有某些依赖性。这些第三方程序集在GAC中维护。 这些程序集的存在和安装通常在我们的自定义cmdlet外部进行处理,并且可以并且将在我们的控制范围之外进行更新。 因此,我们的cmdlet可使用大于1.0.1的程序集的任何版本。问题的一个例子;我们针对版本1.0.1编译cmdlet,并将其放置在已安装程序集为1.0.2.5204的系统上。调用cmdlet函数时,由于出现“找不到程序集版本1.0.1”,因此出现了典型错误。 这里的解决方案(Powershell config assembly redirect)建议使用事件处理程序。不过,对于这种解决方案似乎有些保留,因此我们着眼于尝试开发替代方案。
在考虑自定义二进制cmdlet的注册过程中,我们正在考虑将旧版本的DLL注册到GAC中。如果该程序集的旧版本不存在,而较新的版本存在,则我们知道已安装必需的软件。因此,我们将并排注册较旧的dll与当前应用程序所需的较新的dll。
该解决方案是否有我们没有想到的主要缺点? 我们认为,这将简化我们的代码,因此有兴趣了解这是否是实现该代码的好方法。