我正在使用 PowerShell 中的 MSMQ 触发器和规则做一些工作,但遇到了问题。
我知道以编程方式访问触发器/规则的唯一方法是利用mqtrig.dll程序集,我的研究表明我必须运行tlbimp.exe来创建一个可以从 PowerShell 加载的 .NET 程序集。好的没问题!
除非我运行tlbimp并尝试加载它生成的程序集,否则我收到此错误:
Add-Type : 无法加载文件或程序集 'file:///C:\users\daniel.mann\desktop\mqtrig.dll' 或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,无法加载。
看着$psversiontable
向我展示了这一点:
Name Value
---- -----
CLRVersion 2.0.50727.5477
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
所以,好吧。我得到它。我需要使用生成 CLR 2.0 程序集的tlbimp版本。容易,对吧?
好吧,我碰巧在这个盒子上有一些古老版本的 Visual Studio,所以我找到了一个:
C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\Bin>tlbimp
Microsoft (R) .NET Framework 类型库到程序集转换器 2.0.50727.42
除了我得到同样的错误。
我已经尝试了至少 3 个不同版本的tlbimp ,它们提供了2.0、3.5和 4.0 的版本。PowerShell 1.0/2.0 的正确版本是什么,它位于开发机器上的什么位置?
我知道你可以创建一个 PowerShell.exe.config 文件并允许它加载更新的程序集,但这绝对不会在这里实现——这是自动化部署方案的一部分,我宁愿不必去将配置文件弄乱作为部署前的步骤。