Visual Studio 2017 no puede actualizar el paquete Microsoft.NETCore.App ("Bloqueado por proyecto")

82

Tengo una aplicación de dotnet core que apunta a Microsoft.NETCore.App 1.1.2. Creé un proyecto de prueba para probarlo con ese proyecto, pero al construir noté esta advertencia: ingrese la descripción de la imagen aquí

Abro NuGet Package Manager y veo que la advertencia es correcta, el proyecto que se está probando tiene una versión diferente de Microsoft.NETCore.App: ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Mi problema es que Visual Studio no me permite actualizar esa versión, así que estoy confundido sobre cómo resolver este problema: lo ingrese la descripción de la imagen aquí ideal sería hacer clic en el menú desplegable y seleccionar la versión correcta, pero Visual Studio afirma que no puede hacer esto debido a " restricciones adicionales en el proyecto o packages.config ". ¿Cómo se supone que debo actualizar ese paquete? ¿A qué "restricciones adicionales" se refiere Visual Studio?

riqitang
fuente
Parece que el proyecto de prueba está bloqueando la degradación. ¿Intentó hacer clic derecho en la solución y seleccionar administrar paquetes nuget para la solución y mover todos los proyectos a la versión diferente al mismo tiempo?
Ken Tucker
No había pensado en eso, pero lo intenté y me sale el mismo error "Bloqueado por proyecto". Además, el otro proyecto no puede alejarse de 1.1.2. También instalé la última actualización para VS, pero eso no ayudó.
riqitang
He recopilado toda la información que encontré en esta pregunta / respuesta: stackoverflow.com/questions/52518059/… porque este problema parece ser realmente una pregunta. Las respuestas aquí no están completas para mi escenario
Joshit
Tuve el mismo error cuando apunté por error a diferentes versiones del marco principal de .net en diferentes proyectos de mi solución. Asegúrese de que las propiedades del proyecto para cada destino tengan la misma versión.
obaylis

Respuestas:

51

EDITAR 2018 : solo siga las instrucciones para actualizar el paquete si realmente sabe lo que está haciendo. En la mayoría de los casos, nunca es necesario actualizar este paquete, u otros paquetes marcados como "bloqueados por proyecto", manualmente. Una aplicación dependiente del marco utilizará el último tiempo de ejecución disponible y una aplicación autónoma realizará una compilación adicional utilizando una versión más reciente de este paquete automáticamente. (hay algunos casos extremos en los que necesita actualizar este paquete en proyectos de prueba. en este caso, agregue <TargetLatestRuntimePatch>true</…>y vea estas preguntas y respuestas para conocer otras opciones)

El paquete implícito hace referencia a que los Microsoft.NET.Sdkinfers no se pueden actualizar a través de NuGet.

Si migraste de project.json, es 1.1.0probable que el proyecto con la referencia contenga

<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>

en el archivo csproj o en un elemento como este (si puede usar el administrador de paquetes previamente para configurar la versión):

<PackageReference Update="Microsoft.NETCore.App" Version="1.1.0" />

Elimine entradas como las anteriores y todos los paquetes harán referencia 1.1.2(o lo que sea que el SDK instalado considere el más reciente) automáticamente. Alernativamente, ambientado RuntimeFrameworkVersionen todos los proyectos.

Martin Ullrich
fuente
2
Tenías razón: abrí el archivo .csproj y eliminé la <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>línea. VS todavía no me deja cambiar manualmente la versión, pero al menos es la versión correcta ahora (se actualizó a 1.1.2 como dijiste)
riqitang
48

Tuve un problema similar al intentar instalar el paquete Entityframework.Core en una aplicación web .NET Core 2. Para resolver el problema, forcé la instalación a través de Package Manager Console:

Install-Package Microsoft.NETCore.App -Version 2.0.5

(2.0.5 era la versión más reciente en ese momento)

Espero que te sea de utilidad. Paz.

Marlon Dias
fuente
7
Esto funcionó para mí actualizando a 2.1.1 -> Gran respuesta y falta en todos los artículos que pude encontrar.
Paul
Esto finalmente funcionó para mí también. Después de llamar a esto en el pmc de VS2017 para cada proyecto, actualicé a v2.1.3 desde v2.1.0
Paul Meems
1
Paquete de instalación Microsoft.NETCore.App
Dorathoto
5
Sin embargo, ¿por qué está 'bloqueado por proyecto'? ¿Es esto algún tipo de error o hay una buena razón? si hay una buena razón, ¿quizás hacer lo anterior no sea una buena idea? ¿O soluciona dicho problema?
niico
Gracias por esta pista. Entonces, "Bloqueado por proyecto" resultó como "Bloqueado por VS NuGet GUI".
Grimm
19

Para mi agregando

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

Hizo el truco

<PropertyGroup>
  <TargetFramework>netcoreapp2.1</TargetFramework>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup>
gsharp
fuente
Entonces, esto apuntaría a la última versión del marco en la máquina actual. Si la computadora local está parcheada y el servidor host, ¿no tendría problemas?
Jonmeyer
De hecho, no lo sé porque estamos haciendo implementaciones autónomas. Pero como una suposición salvaje, me imagino que ya que dice "última" y no una versión específica, simplemente no usaría ninguna si no estuviera presente. @jonmeyer
gsharp
Tenía diferentes versiones instaladas en mi solución. Los edité todos para agregar esta línea. Los llevé a la misma versión y luego borré la línea nuevamente. Pero sigo recibiendo el mensaje bloqueado por proyecto cuando administro paquetes nuget para la solución.
sam
@sam, ¿también probaste las otras soluciones? parece que las dos respuestas con más de 30 votos también funcionan para algunas personas.
gsharp
Si. Yo hice. Lo que estoy tratando de hacer es usar la opción administrar paquetes nuget para la solución en la interfaz de usuario e instalar / desinstalar con los clics del mouse. No tener que editar los archivos csproj manualmente. Y no he podido hacer eso usando la interfaz de usuario. Tu manera y las otras opciones funcionan, pero la interfaz de usuario no funciona.
sam
7

Respuesta corta

Agregue una versión explícita a la Microsoft.AspNetCore.Appreferencia del paquete en su archivo .csproj.

Respuesta larga

Tenía un nuevo proyecto netcoreapp2.1. Lo siguiente estaba en el archivo .csproj. Tenga en cuenta que no había ninguna versión asociada con la Microsoft.AspNetCore.Appreferencia del paquete.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  ...
</ItemGroup>

Agregué una referencia explícita al Microsoft.Extensions.Logging.Abstractionspaquete para resolver una falta de coincidencia de dependencia (error de compilación). Micorsoft.AspNetCore.Appquería la versión 2.1.0 de esta dependencia, pero otro paquete quería la versión 2.1.1. Mi archivo .csproj ahora se ve así.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

Esto redujo el error de compilación a una advertencia sobre la Micorsoft.AspNetCore.Appnecesidad de la versión 2.1.0 del Microsoft.Extensions.Logging.Abstractionspaquete, pero la versión 2.1.1, por supuesto, se resolvió.

Micorsoft.AspNetCore.AppEl Administrador de paquetes bloqueó el intento de actualizar a la versión 2.1.1 para corregir la advertencia, como lo menciona el OP.

Actualicé la Micorsoft.AspNetCore.Appreferencia de mi paquete para usar explícitamente la versión 2.1.1 de esta manera.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

Esto solucionó la advertencia de compilación y desbloqueó todas las versiones de Microsoft.AspNetCore.AppPackage Manager. Incluso pude eliminar la referencia explícita a Microsoft.Extensions.Logging.Abstractionssin volver a introducir el error original. El .csproj final se ve así sin problemas.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  ...
</ItemGroup>
bugged87
fuente
3

Tuve el mismo problema y creo que el problema es sobre el paquete.

<PackageReference Include="Microsoft.AspNetCore.App" />

El problema se resolvió después de especificar exactamente la versión.

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" />

Como sé, ese error se produce cuando el número de versión

ddagsan
fuente
2

Otra posible solución. En elcsproj archivo, actualice el marco de destino a la versión a la que desea actualizar. Después de realizar el cambio, según los siguientes fragmentos, los paquetes se pueden actualizar a través del administrador de paquetes de la solución NuGet.

Antes de:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

Después:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
Shooresh
fuente
0

Lo resolví simplemente: haciendo clic derecho en Proyecto (o ALT + Entrar) -> Propiedades -> Aplicación -> Marco de destino (Elija .NET Core framework (en este caso 1.1))

harlandgomez
fuente
0

La mejor recomendación es volver a crear sus proyectos después de actualizar el SDK y el tiempo de ejecución y luego colocar su código y configuración antiguos dentro de los nuevos proyectos. Aparte de eso, pasará demasiado tiempo en ajustes inútiles y configuraciones desconocidas.

Shadi Namrouti
fuente