';的类型初始值设定项;System.Management.Automation.Runspaces.Initia

本文关键字:System Management Runspaces Initia Automation 类型 | 更新日期: 2023-09-27 18:27:35

我正在ASP.NET MVC中开发一个简单的记录管理web应用程序。生成成功。但是,当我转到软件包管理器控制台时,我总是会收到这个错误。

The type initializer for 'System.Management.Automation.Runspaces.InitialSessionState' threw an exception.

有人能向我解释一下这个错误吗?我一直都有,这让我在发展中感到困扰。提前谢谢。

';的类型初始值设定项;System.Management.Automation.Runspaces.Initia

以下信息是从Visual Studio NuGet控制台错误报告票证线程中收集的:https://github.com/NuGet/Home/issues/1638

原因

根据Yishai Galatzer(Microsoft)的评论,该问题是由PowerShell DLL中的堆栈溢出错误引起的,该DLL是System.Management.Automation 3.0的一部分。带有错误的更新DLL显然是在过去几周的某个时候作为Windows更新的一部分分发的。

此外,根据Yishai Galatzer的另一条评论,PowerShell团队将发布一个修复程序,有望在本月晚些时候(2016年1月)发布。

变通办法/临时解决方案

"pete1208"早些时候在同一线程中发布了以下解决方法:

在Visual Studio文件夹中,备份文件devenv.exe.config

然后,在原始的devenv.exe.config文件中,在打开的assemblyBinding元素后面插入以下内容:

<!-- WORKAROUND START for NuGet Console error: 
  "The type initializer for 'System.Management.Automation.Runspaces.InitialSessionState' threw an exception" 
  Author: pete1208 from https://github.com/NuGet/Home/issues/1638 -->
<dependentAssembly>
        <assemblyIdentity name="System.Management.Automation" publicKeyToken="31bf3856ad364e35" />
        <publisherPolicy apply="no" />
      </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.Commands.Utility" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.ConsoleHost" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.Commands.Management" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.Security" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.Commands.Diagnostics" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
<!-- WORKAROUND END -->

(您可能需要一个您最喜欢的文本编辑器的管理员提升版本来将文件保存到您的Visual Studio文件夹中。)

然后,重新启动Visual Studio。

根据Yishai Galatzer的说法,这种解决方法的效果是使用绑定重定向来强制加载PowerShell 1.0。

我尝试了解决方法,它确实对我有效。我的Visual Studio 2013中的包管理器控制台再次正常工作。

我计划密切关注NuGet错误线程,一旦宣布带有System.Management.Automation修复程序的Windows Update正在运行,我将在我的devenv.exe.config文件中退出解决方法。

更新

据Yishai Galatzer(微软)报道,该修复程序于2016年1月12日在Windows Update中发布。