23

在从 Windows 7 升级之前尝试运行托管的 powershell 脚本时出现以下错误,我从未收到此错误。

加载扩展类型数据文件时出现以下错误:Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2977):类型“System.Security.AccessControl.ObjectSecurity”中的错误: 例外:getter 方法应该是公共的、非 void 的、静态的,并且有一个 PSObject 类型的参数。Microsoft.PowerShell.Core,C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2984):类型“System.Security.AccessControl.ObjectSecurity”中的错误:异常:getter 方法应该是公共的,非 void , 静态的,并且有一个 PSObject 类型的参数。Microsoft.PowerShell.Core,C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2991):类型“System.Security.AccessControl.ObjectSecurity”中的错误:异常:getter 方法应该是公共的,非 void , 静态的,并且有一个 PSObject 类型的参数。Microsoft.PowerShell.Core,C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2998):类型“System.Security.AccessControl.ObjectSecurity”中的错误:异常:getter 方法应该是公共的,非 void , 静态的,并且有一个 PSObject 类型的参数。Microsoft.PowerShell.Core,C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3005):“System.Security.AccessControl.ObjectSecurity”类型中的错误:异常:getter 方法应该是公共的,非 void , 静态的,并且有一个 PSObject 类型的参数。getter 方法应该是公共的、非 void 的、静态的,并且有一个 PSObject 类型的参数。Microsoft.PowerShell.Core,C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3005):“System.Security.AccessControl.ObjectSecurity”类型中的错误:异常:getter 方法应该是公共的,非 void , 静态的,并且有一个 PSObject 类型的参数。getter 方法应该是公共的、非 void 的、静态的,并且有一个 PSObject 类型的参数。Microsoft.PowerShell.Core,C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3005):“System.Security.AccessControl.ObjectSecurity”类型中的错误:异常:getter 方法应该是公共的,非 void , 静态的,并且有一个 PSObject 类型的参数。

我在 App.config 中应用了以下内容:

<dependentAssembly>
  <assemblyIdentity name="System.Management.Automation" publicKeyToken="31bf3856ad364e35" />
  <publisherPolicy apply="no" />
</dependentAssembly>

可能是什么问题?

4

5 回答 5

37

解决方案是执行以下操作,而不是按照我阅读的帖子的建议仅为 System.Management.Automation 添加一个块,您需要为所有引用的 PS 程序集添加一个块。

  <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <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>
        </assemblyBinding>
    </runtime>
于 2012-10-08T07:27:54.663 回答
7

我在 VS 2015 Update 3 中遇到了同样的问题。

我必须删除文件夹:

%APPDATA%\Local\Microsoft\VisualStudio\

然后添加到:

c:\Users\%username%\AppData\Local\Microsoft\VisualStudio\14.‌​0\devenv.exe.config

在部分:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

以下几行:

<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>

我花了两天时间寻找解决方案……谢谢 MS :-/

于 2016-11-02T06:35:35.873 回答
1

上面的答案对我不起作用,我通过删除 %APPDATA%..\Local\Microsoft\VisualStudio\ 文件夹解决了这个问题。

重新启动 VS 后,将重新创建此文件夹,并且包管理器控制台再次工作。有点粗糙,但它可以完成工作。

于 2014-08-20T10:03:57.107 回答
1

在尝试了已接受答案中的解决方案并厌倦了 Visual Studio 重置文件后,我从头开始重新安装了 VS 2015,此后一直没有出现问题。如果您发现问题仍然存在,那么核选项绝对值得一试。

于 2016-02-03T08:33:07.240 回答
0

为您的操作系统安装适当版本的 PowerShell:

  • Windows XP SP2 / Vista / 2003 / 2008 - PowerShell v1.0
  • Windows XP SP3 / Vista SP1 / 7 / 2003 SP2 / 2008 R2 - PowerShell v2.0
  • Windows 7 SP1 / 8 / 2008 SP1 / 2008 R2 SP1 / 2012 - PowerShell v3.0
  • Windows 7 SP1 / 8.1 / 2008 R2 SP1 / 2012 / 2012 R2 - PowerShell v4.0
  • Windows 7 SP1 / 8.1 / 2008 R2 SP1 / 2012 / 2012 R2 - PowerShell v5.0(作为 Windows Management Framework (WMF) 5.0 的一部分)
于 2016-07-28T21:11:21.990 回答