我遇到的问题是SelectedIndexChanged
事件未在我System.Windows.Forms.ComboBox
对象上触发,但仅在我的计算机上。它可以在其他人的计算机上正常工作。
当我在对象上运行GetType().assembly
时,我的计算机显示.Net 4.0,但其他人都是2.0。
如何将对象强制为2.0?
以下是相关装配导入:
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
答案 0 :(得分:3)
PowerShell会自动从PowerShell运行的.Net版本加载程序集。 因此,指向v2.0程序集可能仍会强制它加载v4.0程序集。
由于您加载v4.0程序集,您可能不使用PS1,而是使用PS3或4,然后简单的解决方案是使用以下方式在2.0模式下运行PowerShell:
powershell.exe -version 2
答案 1 :(得分:2)
您确定使用的是PowerShell v1吗?这应该是CLR v2而不是加载.Net 4.0程序集。您的代码应该加载2.0程序集。如果不是这样,那么您的powershell v1是configured to load CLR v4。那或你正在使用PowerShell v3或更高版本。
尝试$ PSVersionTable并查看其内容。
如果它读取PSVersion 1或2,则撤消对PowerShell的更改,使其使用CLR v4。如果它读取更高版本,那么就没有办法了。 .Net框架程序集将始终加载4.0版本。
在任何情况下,我都不希望它解释你的事件没有解雇。
<强>更新强>
As Graimer notes,您可以将较新的PowerShell版本加载为旧版本,包括较旧的CLR版本。