Dot-Net

無法載入 Exchange powershell 管理單元:“Microsoft.Exchange.Data.Directory.Globals”的類型初始化程序引發異常

  • March 21, 2019

我有以下程式碼創建一個載入了 Exchange 2010 管理單元的 PowerShell 執行空間。

Dim runspaceConfig = RunspaceConfiguration.Create()

Dim snapInException As PSSnapInException = Nothing
runspaceConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", snapInException)

Dim runspace = RunspaceFactory.CreateRunspace(runspaceConfig)
runspace.Open()

自安裝 Visual Studio 2012 以來,在執行將管理單元添加到執行空間配置的行時,我開始收到以下錯誤。

System.Management.Automation.Runspaces.PSSnapInException occurred
 HResult=-2146233087
 Message=Cannot load Windows PowerShell snap-in Microsoft.Exchange.Management.PowerShell.E2010 because of the following error: The type initializer for 'Microsoft.Exchange.Data.Directory.Globals' threw an exception.
 Source=System.Management.Automation
 WasThrownFromThrowStatement=False
 StackTrace:
      at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadCustomPSSnapIn(PSSnapInInfo mshsnapinInfo)
      at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadPSSnapIn(PSSnapInInfo mshsnapinInfo)
      at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadPSSnapIn(PSSnapInInfo mshsnapinInfo, PSSnapInException& warning)
      at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.DoAddPSSnapIn(String name, PSSnapInException& warning)
      at System.Management.Automation.Runspaces.RunspaceConfiguration.AddPSSnapIn(String name, PSSnapInException& warning)

我已經能夠確認 nlog 以某種方式導致了這個問題。在創建 powershell 執行空間之前創建 nlog 記錄器的組合會導致錯誤。

如果我從我的應用程序配置中刪除 nlog 配置部分並僅創建一個空的 nlog 記錄器,則管理單元載入時不會出現錯誤。此外,如果我將 nlog 配置保留在我的應用程序配置中但不創建 nlog 記錄器,則管理單元也會成功載入。

  • 我已經嘗試在 x64 和 x86 中建構項目。
  • 我已經重新安裝了交易所管理工具。
  • 我曾嘗試在交換環境中的另一台機器上進行測試。

如果有人可以提供任何可以幫助我解決此問題的建議,我將不勝感激。

謝謝

經過進一步調查,我發現 .NET 4.5 是一個就地更新,這意味著 .NET 4.0 被覆蓋並在安裝時替換為 .NET 4.5。我不知道導致此問題的 .NET 4.5 中發生了什麼變化,但通過解除安裝 .NET 4.5 並切換回 Visual Studio 2010 解決了這個問題。希望微軟在不久的將來會有一些更新來解決這個問題並允許我再次使用 Visual Studio 2012。

有關就地更新的更多資訊,請參閱以下文章。 http://www.devproconnections.com/article/net-framework/net-framework-45-versioning-faces-problems-141160

引用自:https://stackoverflow.com/questions/12480447