我正在调试为什么PowerShell脚本开始失败,看起来它在没有引用System.Core程序集的情况下使用Hashset,所以修复最终会得到这样的结果:
Add-Type -AssemblyName System.Core
$hash = new-object 'System.Collections.Generic.HashSet[string]'
我能弄清楚它之前是如何工作的,并且在某些机器上运行得很好,没有添加类型线。我在这里缺少什么?
答案 0 :(得分:2)
要继续David的想法,并且因为评论中的代码很可怕,您应该检查程序集是否已加载。关于检查程序集的小博客是here
If (!(([appdomain]::currentdomain.GetAssemblies()).FullName -match "System\.Core")){
Add-Type -AssemblyName System.Core
}
$hash = new-object 'System.Collections.Generic.HashSet[string]'
我默认加载了这个程序集。好奇受影响的系统有什么。受影响的计算机上的Dot.Net框架版本是什么?我的一些3.5代码在Windows更新后停止工作,需要重新安装框架。
来自 Jeroen Mostert的评论
如果你想真的准确,你应该验证你 得到了.NET自己的
System.Core
,而不是任何旧的冒名顶替者 没有必要检查已经发生的事情。Add-Type -AssemblyName "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"