Вложение Powershell v2.0 в приложение .NET в Windows 8 RTM
Я получаю следующую ошибку при попытке запустить сценарии с мощными сценариями до обновления с Windows 7. Я никогда не получал эту ошибку.
При загрузке данных расширенного типа произошла ошибка файл: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml (2977): ошибка в типе "System.Security.AccessControl.ObjectSecurity" : Исключение: метод getter должен быть открытым, непустым, статическим и иметь один параметр типа PSObject. Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml (2984): ошибка в типе "System.Security.AccessControl.ObjectSecurity" : Исключение: метод getter должен быть открытым, непустым, статическим и иметь один параметр типа PSObject. Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml (2991): ошибка в типе "System.Security.AccessControl.ObjectSecurity" : Исключение: метод getter должен быть открытым, непустым, статическим и иметь один параметр типа PSObject. Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml (2998): ошибка в типе "System.Security.AccessControl.ObjectSecurity" : Исключение: метод getter должен быть открытым, непустым, статическим и иметь один параметр типа PSObject. Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml (3005): ошибка в типе "System.Security.AccessControl.ObjectSecurity" : Исключение: метод getter должен быть открытым, непустым, статическим и иметь один параметр типа PSObject.
Я применил следующее в App.config:
<dependentAssembly>
<assemblyIdentity name="System.Management.Automation" publicKeyToken="31bf3856ad364e35" />
<publisherPolicy apply="no" />
</dependentAssembly>
Что может быть проблема?
Ответы
Ответ 1
Решение состоит в том, чтобы сделать следующее, а не просто добавлять блок только для 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>
Ответ 2
У меня была та же проблема в обновлении VS 2015.
Я должен удалить папку:
%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: -/
Ответ 3
выше ответ не работал у меня, я исправил проблему, удалив папку% APPDATA%..\Local\Microsoft\VisualStudio \.
При перезапуске VS эта папка воссоздается, и консоль диспетчера пакетов работает снова. Немного грубо, но он выполняет эту работу.
Ответ 4
После попытки решения в принятом ответе и устали от перезагрузки Visual Studio, я переустановил VS 2015 с нуля и с тех пор не имел проблемы. Если вы обнаружите, что проблема не устранена, ядерный вариант определенно стоит попробовать.
Ответ 5
Установите соответствующую версию 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)