我目前正在编写一个PowerShell管理单元,它对特定于x64或x86的混合模式程序集(包含本机代码的程序集)具有特定的依赖关系。我有两个版本的依赖程序集,但我想知道如何最好地管理这个管理单元的构建和部署,具体来说:
答案 0 :(得分:4)
Mark,我们在PowerShell社区扩展中遇到了这种情况,它具有32位和64位版本的7zip.dll。您可以通过在snapin启动早期(或需要调用本机DLL之前)PInvoking到LoadLibrary来轻松解决此问题。然后,您可以测试您是32位还是64位进程(IntPtr.Size),然后使用LoadLibrary PInvoke手动加载正确的DLL。之后,DllImport(“YourNative.dll”)会注意到dll已经加载并使用该DLL。
看看这两个PSCX源代码文件: http://pscx.codeplex.com/SourceControl/changeset/view/74794?ProjectName=Pscx#1358100 http://pscx.codeplex.com/SourceControl/changeset/view/74794?ProjectName=Pscx#1358102
答案 1 :(得分:1)
我最终创建了一个模块(谢谢理查德!),但这并没有解决与处理器架构相关的问题。为了解决这个问题,我将两个版本的依赖dll放在模块目录中,并在每个cmdlet的构造函数中放入一些初始化代码(只运行一次)来加载相应版本的依赖dll。
非常感谢,指点。