簡體   English   中英

如何在PowerShell中更改對象類型程序集

[英]How do I Change Object Type Assembly in PowerShell

我遇到一個問題,即應該何時在System.Windows.Forms.ComboBox對象上不觸發SelectedIndexChanged事件,而僅在我的計算機上 它可以在其他人的計算機上正常工作。

當我在該對象上運行GetType().assembly時,我的計算機顯示.Net 4.0,而其他人則顯示2.0。

如何將對象強制為2.0?

這是relevent程序集導入:

[reflection.assembly]::loadwithpartialname("System.Windows.Forms")  | Out-Null

在此處輸入圖片說明

PowerShell會自動從運行PowerShell的.Net版本加載程序集。因此,指向v2.0程序集可能仍會強制其加載v4.0程序集。

自從加載v4.0程序集以來,您可能未使用PS1,而是使用PS3或4,那么簡單的解決方案是使用以下命令以2.0模式運行PowerShell:

powershell.exe -version 2

您確定使用的是PowerShell v1嗎? 那應該是CLR v2,並且不加載.Net 4.0程序集。 您的代碼應加載2.0程序集。 如果不是這種情況,則將您的powershell v1 配置為加載CLR v4 那或您正在使用PowerShell v3或更高版本。

嘗試$ PSVersionTable並查看其內容。

如果讀取PSVersion 1或2,則撤消對PowerShell的更改,使其使用CLR v4。 如果它讀取較高的版本,則沒有辦法。 .Net框架程序集將始終加載4.0版本。

無論如何,我都不希望它解釋您的事件未觸發。

更新資料

如Graimer所述 ,但是您可能會以較舊的版本(包括較舊的CLR版本)加載較新的PowerShell版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM