23

Windows 7からアップグレードする前にホストされたPowerShellスクリプトを実行しようとすると、次のエラーが発生します。このエラーは発生しませんでした。

拡張型データファイルの読み込み中に次のエラーが発生しました:Microsoft.PowerShell.Core、C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ types.ps1xml(2977):タイプ"System.Security.AccessControl.ObjectSecurity"のエラー:例外:getterメソッドは、public、non void、staticであり、PSObject型のパラメーターを1つ持つ必要があります。Microsoft.PowerShell.Core、C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ types.ps1xml(2984):タイプ "System.Security.AccessControl.ObjectSecurity"のエラー:例外:getterメソッドはパブリックである必要があります。 、staticであり、PSObjectタイプのパラメーターが1つあります。Microsoft.PowerShell.Core、C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ types.ps1xml(2991):タイプ "System.Security.AccessControl.ObjectSecurity"のエラー:例外:getterメソッドはパブリックである必要があります。 、静的であり、タイプPSObjectのパラメーターが1つあります。Microsoft.PowerShell.Core、C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ types.ps1xml(2998):タイプ "System.Security.AccessControl.ObjectSecurity"のエラー:例外:getterメソッドはパブリックである必要があります。 、staticであり、PSObjectタイプのパラメーターが1つあります。Microsoft.PowerShell.Core、C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ types.ps1xml(3005):タイプ "System.Security.AccessControl.ObjectSecurity"のエラー:例外:getterメソッドはパブリックである必要があります。 、staticであり、PSObjectタイプのパラメーターが1つあります。getterメソッドは、public、non void、staticであり、PSObjectタイプのパラメーターを1つ持つ必要があります。Microsoft.PowerShell.Core、C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ types.ps1xml(3005):タイプ "System.Security.AccessControl.ObjectSecurity"のエラー:例外:getterメソッドはパブリックである必要があります。 、staticであり、PSObjectタイプのパラメーターが1つあります。getterメソッドは、public、non void、staticであり、PSObjectタイプのパラメーターを1つ持つ必要があります。Microsoft.PowerShell.Core、C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ types.ps1xml(3005):タイプ "System.Security.AccessControl.ObjectSecurity"のエラー:例外:getterメソッドはパブリックである必要があります。 、staticであり、PSObjectタイプのパラメーターが1つあります。

App.configで以下を適用しました。

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

問題は何でしょうか?

4

5 に答える 5

37

解決策は、私が読んだ投稿で示唆されているようにSystem.Management.Automationのみのブロックを追加するのではなく、次のことを行うことです。参照されるすべてのPSアセンブリに1つ追加する必要があります。

  <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 2015Update3でも同じ問題が発生しました。

フォルダを削除する必要があります:

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

私は解決策を探すのに2日を失いました...ありがとう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

OSに適切なバージョンの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 に答える