Día 1:

System: Windows 10
Microsoft Visual Studio Community 2017 
Version 15.5.5
VisualStudio.15.Release/15.5.5+27130.2026

Tengo un proyecto de sitio web que utiliza el paquete WindowsAzure.Storage NuGet.

Desde Visual Studio, hago lo siguiente:

Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution ...

El sistema muestra 2 actualizaciones disponibles:

Newtonsoft.Json v10.0.3 (currently installed v9.0.1)
WindowsAzure.Storage v9.0 (currently installed v8.7)

Selecciono la casilla de verificación "Seleccionar todos los paquetes" y hago clic en el botón "Actualizar".

FAIL (¡¡Nunca había sucedido esto antes) !!

A continuación se muestra la salida capturada de Visual Studio:

Retrieving package 'WindowsAzure.Storage 9.0.0' from 'nuget.org'.
...
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3007) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3014) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3021) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3028) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3035) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The term 'Get-ExecutionPolicy' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Install failed. Rolling back...

La ventana de lista de errores muestra:

Failed to initialize the PowerShell host. If your PowerShell execution policy setting is set to AllSigned, open the Package Manager Console to initialize the host first.

Salida de Powershell de: Get-ExecutionPolicy -List salida:

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    Unrestricted
 LocalMachine    Unrestricted

¿Hay algún problema con el paquete NuGet o con mi sistema?

Nunca he tenido este problema antes y después de buscar una solución (no se ha encontrado ninguna hasta ahora). ¡Estoy a merced de los dioses de NuGet / Visual Studio!

Gracias de antemano.

======

Día 2: 8:00 a. m. ...

Intentando de nuevo ... Veamos si podemos hacer que la Consola del Administrador de paquetes funcione ...

Iniciar Visual Studio (Comunidad 2017)

TOOLS -> NuGet Package Manager -> Package Manager Console

Lo que da como resultado que se muestre lo siguiente:

The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3007) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3014) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3021) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3028) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3035) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The term 'Get-ExecutionPolicy' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

¡De vuelta a la mesa de dibujo! Seguiremos buscando una solución ...

Entonces, probemos Visual Studio Installer ...

Launch Visual Studio Installer
Select "More" -> "Repair"

Lo que resulta en:

The dependent package cannot be found: Component.PowerShellTools.VS2017,version=3.0.585

Hago clic en "Ver registro", que muestra:

[1cb4:000a][2018-02-17T08:27:06] Error 0x80131500: The dependent package cannot be found: Component.PowerShellTools.VS2017,version=3.0.585
   at Microsoft.VisualStudio.Setup.Dependencies.DependencyManager.FindDependentPackages(Dependency dependency, DependencyComparer comparer, Dictionary`2 packageIndex)
   at Microsoft.VisualStudio.Setup.Dependencies.DependencyManager.BuildGraphRecursive(IPackage graphRoot, DependencyNode node, DependencyComparer comparer, Dictionary`2 packageIndex, Dictionary`2 nodeIndex, Boolean splitNodes)
   at Microsoft.VisualStudio.Setup.Dependencies.DependencyManager.BuildGraphCore(IPackage root, IEnumerable`1 packages, DependencyComparer comparer, Dictionary`2 packageIndex, Dictionary`2 nodeIndex, Boolean splitNodes, DependencyCollection deprecated)
   at Microsoft.VisualStudio.Setup.Dependencies.DependencyManager.BuildGraph(IPackage root, IEnumerable`1 packages, Boolean isUpdate, IDependencyComparisonSeed seed, DependencyCollection deprecated)
   at Microsoft.VisualStudio.Setup.Engine.GetDependencyGraph(Product product)
   at Microsoft.VisualStudio.Setup.Engine.PreChecks(String installationPath, Boolean isLayoutSet, Product product, ExecuteAction bootstrapperAction, ITelemetryOperation operation, IQuery query)
   at Microsoft.VisualStudio.Setup.Engine.Repair(CancellationToken token)

Ok, de alguna manera, mi sistema ha perdido un paquete dependiente (Component.PowerShellTools.VS2017). Intentaré modificarlo para ver si puedo agregar el paquete ...

======

Día 2 - 10:15 a. m. (todavía en eso) - estado actual - al final del ingenio ...

Microsoft Visual Studio Community 2017 
Version 15.5.6
VisualStudio.15.Release/15.5.6+27130.2027
Microsoft .NET Framework
Version 4.7.02556

Hago lo siguiente:

TOOLS -> NuGet Package Manager -> Package Manager Console

Lo que da como resultado que se muestre lo siguiente:

enter image description here

Si alguien (Microsoft) tiene una solución, ¡REALMENTE lo agradecería!

======

Día 2: 3:09 pm ...

En un intento final (desesperado), lancé el instalador de Visual Studio

Click on "More" -> "Repair" ....

Después de un par de horas, Visual Studio se (re) instaló:

Microsoft Visual Studio Community 2017 
Version 15.5.6
VisualStudio.15.Release/15.5.6+27130.2027
Microsoft .NET Framework
Version 4.7.02556

Luego hago lo siguiente (después de encender 12 velas y cantar "Bill-Bill-Bill") ...

TOOLS -> NuGet Package Manager -> NuGet Manager Console

Resultado:

The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3007) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3014) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3021) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3028) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3035) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The term 'Get-ExecutionPolicy' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Estoy condenado: no puedo usar Visual Studio hasta que esto se solucione.

======

Día 3 - 7:49 a. m.

Veo que MSFT ha evaluado mi problema en:

https://developercommunity.visualstudio.com/content/problem/199976/visual-studio-failed-to-initialize-the-powershell.html

También he probado las "soluciones" de estos recursos:

https://developercommunity.visualstudio.com/content/problem/154563/failed-to-initialize-the-powershell-host.html

https://docs.microsoft.com/en-us/nuget/release-notes/known-issues#opening-package-manager-console-fails-with-objectsecurity-exception

Desafortunadamente, nada de lo anterior ha ayudado a corregir este problema.

La mayoría de las publicaciones indican que puede ser necesaria una reinstalación completa de VS.

¡Esperando que se encuentre una solución que NO REQUIERA UNA REINSTALACIÓN COMPLETA!

======

Día 3 - 1:54 p. m.

Renunció ...

  1. Visual Studio DESINSTALADO. Apagado (sistema apagado)
  2. Inicio (sistema encendido)
  3. Instalador de Visual Studio descargado de https://www.visualstudio.com/downloads/
  4. Ejecutó la aplicación Disk Clean según las instrucciones del instalador.
  5. Apagado (sistema apagado)
  6. Inicio (sistema encendido)
  7. Ejecutó el instalador de la comunidad de Visual Studio 2017: éxito.
  8. Inicie Visual Studio
  9. HERRAMIENTAS -> Administrador de paquetes NuGet -> Consola del administrador de paquetes

Resultado:

The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3007) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3014) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3021) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3028) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3035) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The term 'Get-ExecutionPolicy' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Entonces, ¡ni siquiera una nueva instalación de Visual Studio Community está resolviendo este problema!

======

Día 4 - 9:11 a. m.

A última hora de la noche abrí un nuevo problema en GitHub re PowerShell, consulte:

https://github.com/PowerShell/PowerShell/issues/6189

Esta mañana, encontré una respuesta y acepté la sugerencia de lzybkr y desactivó Powershell V2; Publiqué los comandos para deshabilitar V2 en la publicación de GitHub anterior.

Las buenas noticias : ¡pude actualizar los paquetes a través de NuGet nuevamente!

Las malas noticias : si inicio Visual Studio y luego lo hago:

TOOLS -> NuGet Package Manager -> Package Manager Console

Se abre la ventana de la consola, pero simplemente se cuelga con el siguiente mensaje:

Initializing Powershell host...

TODAVÍA NO tengo idea de QUÉ está causando este comportamiento dentro de Visual Studio; pero después de 4 días, me considero afortunado de poder (una vez más) actualizar los paquetes de NuGet y volver al trabajo.

Aunque mi "problema" de actualización de paquetes NuGet se ha resuelto (en su mayor parte), todavía no veo esto como una solución como la causa raíz de por qué Visual Studio / NuGet Package Manager Console no puede inicializar el host de PowerShell NO se ha resuelto .

Si alguien encuentra la causa raíz, publique su solución.

2
bdcoder 17 feb. 2018 a las 06:01

2 respuestas

La mejor respuesta

Lo siguiente finalmente resolvió el problema descrito anteriormente:

https://developercommunity.visualstudio.com/content/problem/199976/visual-studio-failed-to-initialize-the-powershell.html

2
bdcoder 21 feb. 2018 a las 17:32

Finalmente hemos identificado la causa raíz del problema y lo arreglaremos en la versión 15.8 de Visual Studio.

Por ahora, las posibles soluciones para esto son:

1) Instale .NET 2.0 en su máquina, que instalará System.Management.Automation Version = 1.0.0

2) Utilice la redirección de enlace como lo sugirieron algunos de los miembros de la comunidad en devenv.exe.config:

<dependentAssembly>
   <assemblyIdentity name="System.Management.Automation" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
    <publisherPolicy apply="no" />
   </dependentAssembly>

Gracias, equipo de Rohit Agrawal NuGet

1
rohit21agrawal 27 abr. 2018 a las 17:37