visual studio - studio - Faltan paquetes NuGet
nuget packet (30)
CUIDADO: esto actualiza los paquetes para toda la solución, no solo el proyecto.
Si le falta un paquete nuget más que da su error al construir su solución, use el siguiente comando usando la Consola de comandos Nuget desde Herramientas> Nuget Package Manager> Package Manager Console. Reinstalará todos sus paquetes actuales.
Update-Package –reinstall
Busqué este problema pero ninguna de las soluciones funcionó. Tengo instalado Visual Studio Professional 2015 y estoy usando TFS. Mi versión de NuGet es 3.1.6. Este problema solo ocurre en mi proyecto C # Web API / MVC.
Recibo el siguiente error:
Este proyecto hace referencia a los paquetes NuGet que faltan en esta computadora. Use NuGet Package Restore para descargarlos. Para obtener más información, consulte http://go.microsoft.com/fwlink/?LinkID=322105 . El archivo que falta es .. / packages / Microsoft.Net.Compilers.1.0.0 / build / Microsoft.Net.Compilers.props
- No tengo la carpeta .nuget en mis soluciones.
- Tengo una carpeta de paquetes en la solución y cuando la elimino, parece que NuGet reconstruye las dependencias, pero el proyecto todavía tiene el error anterior.
- Intenté eliminar el proyecto de TFS y no lo solucionó.
- Junto con el error anterior, todas las referencias en el proyecto tienen señales de advertencia amarillas y dicen que faltan.
- Cuando revisé el NuGet Package Manager para el proyecto, todo lo que "falta" tiene una marca verde al lado, incluidos Microsoft.Net.Compilers.
- Intenté agregar un nuevo proyecto Web API / MVC y se enfrentó a un problema similar en el que la mayoría de las referencias como Owin "faltaban" con la señal de advertencia amarilla.
Comente la opción del compilador en
WebConfig
:
<!--<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=/"Web/" /optionInfer+" />
</compilers>
</system.codedom>-->
Actualice la última versión de los paquetes en el archivo de configuración del paquete
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.4" targetFramework="net452" />
Reconstruir si todo está bien, no es necesario continuar, de lo contrario, haga clic con el botón derecho en el proyecto, haga clic en ''descargar proyecto'' Haga clic con el botón derecho en el proyecto nuevamente y edite el archivo .csproj
Valide la ruta de Codedom, no tenía net45 en rutas anteriores, agréguela manualmente, guarde, cargue, reconstruya. Deberia de funcionar.
<Import Project="../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4/build/net45/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists(''../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4/build/net45/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'')" />
Como muchos sugirieron que eliminar la etiqueta
<Target>
puede hacer que sea compilable.
Sin embargo, tenga cuidado con el hecho de que tiene un efecto secundario cuando lo hace para proyectos de prueba.
Recibí un error relacionado con el paquete
MSTest.TestAdapter
MSTest.TestAdapter al compilar.
Se resolvió ese problema eliminando la etiqueta
<Target>
.
Aunque hizo que la construcción fuera exitosa, los métodos de prueba no se pudieron descubrir.
El explorador de pruebas no enumerará los métodos de prueba en ese proyecto y Run Test o Debug Test no funcionarán tan bien.
Encontré esto mientras usaba
Visual Studio 2017
y
.Net framework 4.7
, puede muy bien suceder en otras versiones
El mío funcionó cuando copié la carpeta de paquetes junto con el archivo de solución y la carpeta del proyecto. Simplemente no copié la carpeta de paquetes del lugar anterior.
El mensaje de error es completamente correcto. Intenté todos los trucos y ninguno funcionó. El proyecto (prueba simple de aplicación web MVC) se trasladó de Windows 8.1 VS 2015 Community a mi nuevo cuadro de prueba en Windows 10. Se aplicaron todas las últimas actualizaciones de VS 2015. Ni siquiera pude instalar ninguna versión más nueva del paquete de compiladores.
Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop
Finalmente acabo de copiar Microsoft.Net.Compilers.1.0.0 del antiguo proyecto al nuevo y funcionó. Entonces podría comenzar a actualizar otros paquetes a una versión más nueva. A mí me parece un error del proceso de actualización del proyecto Nuget.
NOTA: El proyecto original se creó en VS 2015 y no tiene ninguna metodología nuget heredada.
El problema para mí era que NuGet no podía obtener / actualizar automáticamente los paquetes porque la ruta completa del archivo sería demasiado grande. Solucionado moviendo mi solución a una carpeta en mis Documentos en lugar de una carpeta profundamente anidada .
Luego, puede hacer clic con el botón derecho en la solución y seleccionar "Restaurar paquetes NuGet" (lo que probablemente no sea necesario si solo lo crea y deja que lo haga por usted), y luego seleccione "Administrar paquetes NuGet para la solución" para obtener todos los paquetes actualizado a la última versión.
Esto fue para una solución de una aplicación ASP MVC de muestra descargada del sitio web de Microsoft.
Estaba teniendo el mismo problema, resultó que uno de los proyectos a los que hacía referencia estaba fuera del directorio de la solución (y, por lo tanto, no compartía la misma carpeta ''/ packages''). La solución que funcionó para mí fue abrir la solución del proyecto de referencia y construirla allí. Una vez que se construyó ese proyecto, los errores desaparecieron.
Estoy usando VS2012 y enfrento el mismo error. Eliminé la siguiente etiqueta de destino del archivo .csproj y comenzó a compilar sin ningún error.
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-- Error messages within Target Tag
</Target>
La carpeta en mi solución se llamaba "Proyecto .NET". Al renombrarlo a "Proyecto NET" todo funcionó bien. Entonces el punto al principio fue una mala idea.
Me doy cuenta de que esta pregunta es antigua, sin embargo, me encontré con esta misma situación hoy y quería arrojar mis 2 centavos por cualquiera que haya encontrado recientemente este problema. Un proyecto ASP MVC que había movido manualmente a una subcarpeta en mi solución y luego lo eliminé y leí en la solución, usando Visual Studio 2017, estaba dando el error mencionado. Mover las carpetas "lib" y "paquetes" a la raíz de la misma subcarpeta que el proyecto MVC solucionó mi problema.
No estoy seguro de si esto ayudará a alguien, pero tuve este problema cuando borré el código fuente de mi máquina local sin haber guardado el archivo de solución en TFS. (Durante el desarrollo inicial, estaba haciendo clic derecho y registrando el proyecto en el Explorador de soluciones, pero olvidé verificar la solución en sí misma). Cuando necesitaba trabajar en esto nuevamente, todo lo que tenía en TFS era el archivo .csproj, sin archivo .sln. Entonces, en VS, hice un Archivo -> Control de origen -> Avanzado - Abrir desde el servidor y abrí el archivo .csproj. Desde allí hice un Guardar todo y me preguntó dónde quería guardar el archivo .sln. Estaba guardando este archivo .sln en el directorio del proyecto con las otras carpetas (App_Data, App_Start, etc.), no el directorio de nivel superior. Finalmente descubrí que necesito guardar el archivo .sln en un directorio de la carpeta del proyecto para que esté en el mismo nivel que la carpeta del proyecto. Todos mis caminos se resolvieron y pude construirlo nuevamente.
No pude encontrar ninguna solución para esto, así que agregué una copia de nuget.exe y un script de PowerShell al directorio raíz de la solución llamada prebuild.ps1 con el siguiente contenido.
$nugetexe = ''nuget.exe''
$args = ''restore SOLUTION_NAME_HERE.sln''
Start-Process $nugetexe -ArgumentList $args
Llamé a este script de PowerShell en mi compilación en la ruta del script de precompilación
Obtuve una solución a este error, en realidad estaba teniendo una versión diferente de MSTest.TestAdapter (1.3.2) en mi carpeta de paquetes y en el archivo .csproj las referencias apuntaban a MSTest.TestAdapter (1.1.0). He reemplazado todos los MSTest.TestAdapter (1.1.0) a MSTest.TestAdapter (1.3.2), y esto resolvió mi problema.
Para ampliar algunas de las respuestas aquí, sí, puede eliminar el siguiente bloque de su archivo .csproj:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
y esto soluciona el problema, sin embargo, en mi caso, noté que tenía referencias adicionales a .NET.Compilers y .CodeDom.Providers con diferentes versiones:
<Error Condition="!Exists(''../packages/Microsoft.Net.Compilers.1.0.0
<Error Condition="!Exists(''../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0/
<Error Condition="!Exists(''../packages/Microsoft.Net.Compilers.2.0.1
<Error Condition="!Exists(''../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3/
Cuando my packages.config solo hacía referencia a lo siguiente:
<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"
La eliminación de los elementos 1.0.0 del archivo .csproj solucionó el problema.
Para cualquiera que tropiece aquí con el problema que tuve (algunos pero no todos los paquetes que se están restaurando en un servidor de compilación), la pieza final del rompecabezas para mí fue agregar un NuGet.config en la raíz de mi solución, hermano del .SLN archivo como David Ebbo explicó aquí: http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html .
De la publicación del blog de Ebbo, el contenido del archivo para mí es simplemente
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
</configuration>
ACTUALIZAR:
La URL de la API de NuGet ha cambiado para v3 (actual a partir de septiembre de 2016). Desde https://www.nuget.org/
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
Para los ingenieros de DevOps / build, probablemente pueda corregir esta
nuget restore
ejecución contra el SLN afectado, o proyectar si carece de un SLN.
Tengo que hacer esto para nuestras compilaciones de CI / CD para todos nuestros proyectos de UWP.
- Asegúrese de que nuget esté instalado en el esclavo de compilación, ya sea en Visual Studio o en forma independiente. Si es lo último, asegúrese de que esté en RUTA y omita el paso 2.
-
Abra la consola VS Dev CMD o cárguela a través de una ya abierta, lo que puede hacer con las instrucciones a continuación:
call "%VS140COMNTOOLS%VsDevCmd.bat"
VS2015call "%VS140COMNTOOLS%VsDevCmd.bat"
o
call "%ProgramFiles(x86)%/Microsoft Visual Studio/2017/Enterprise/Common7/Tools/VsDevCmd.bat"
VS2017call "%ProgramFiles(x86)%/Microsoft Visual Studio/2017/Enterprise/Common7/Tools/VsDevCmd.bat"
-
call nuget restore MyStuff.SLN
ocall nuget restore MyStuff.csproj
si no hay SLN.
Para mí, los paquetes estaban allí bajo la ruta correcta, pero las carpetas de compilación dentro de la carpeta del paquete no. Simplemente eliminé todos los paquetes que decía que faltaban y reconstruí la solución y creó con éxito las carpetas de compilación y los archivos .props. Entonces, los mensajes de error fueron correctos al informarme que algo faltaba.
Para mí, mi archivo gitignore ignoraba mi carpeta de paquetes. La siguiente línea de gitignore estaba causando el problema:
**/packages/*
Eliminado y restaurado mi carpeta de paquetes. Espero que esto ayude a alguien más.
Recibí este mensaje exacto y frustrante. Lo que finalmente funcionó para mí fue eliminar todos los archivos y carpetas dentro de / paquetes y dejar que VS recupere todo en la próxima compilación.
Resolví este problema eliminando el siguiente código del archivo .csproj
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists(''../../../Assemblies/NuGet/SpecFlow.Plus.Excel.1.4.2/build/SpecFlow.Plus.Excel.targets'')" Text="$([System.String]::Format(''$(ErrorText)'', ''../../../Assemblies/NuGet/SpecFlow.Plus.Excel.1.4.2/build/SpecFlow.Plus.Excel.targets''))" />
También puede usar el mensaje de error sugerido como una pista. A continuación, le indicamos cómo encontrar los paquetes de administración para la solución y hacer clic en resolver el paquete nuget faltante.
Eso es
Tiberiu es correcto. Tuve que editar mi archivo .csproj ya que los archivos se movieron y causaron este problema
<Import Project="../../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1/build/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists(''../../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1/build/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'')" />
Cambié en la parte superior del archivo y en la parte inferior
<Error Condition="!Exists(''../../packages/Microsoft.Net.Compilers.1.0.0/build/Microsoft.Net.Compilers.props'')" Text="$([System.String]::Format(''$(ErrorText)'', ''../../packages/Microsoft.Net.Compilers.1.0.0/build/Microsoft.Net.Compilers.props''))" />
<Error Condition="!Exists(''../../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1/build/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'')" Text="$([System.String]::Format(''$(ErrorText)'', ''../../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1/build/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props''))" />
Tuve el mismo error (falta exactamente el mismo paquete) hoy. También creé un proyecto MVC + Web API.
Sucedió porque moví los archivos de la aplicación (incluido el archivo .csproj) a otra ubicación. Actualicé manualmente el archivo .sln pero todas las dependencias de los paquetes están ahora (Visual Studio 2015) almacenadas en el archivo .csproj.
Editar el archivo .csproj y corregir la ruta relativa a la carpeta de la solución (que contiene la carpeta de paquetes) resolvió el problema para mí.
Tuve este problema como una compilación fallida en Azure, cuando se implementó desde Git.
Resulta que mi .gitignore excluía la carpeta de
build
de
../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0/build/net46/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props
.
Una vez que la carpeta de
build
fue (forzada) comprometida con Git, el problema se resolvió.
Una combinación de las 2 respuestas funcionó para mí. Primero modifiqué el archivo .csproj para eliminar la referencia a la versión 1.0.0
< Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild" >
----Error---
< /Target>
y luego lo hizo
Update-Package -Reinstall
del y funcionó.
de esta manera resolvió mi error: para abrir el archivo .csproj para su actualización en Visual Studio 2015+ Solution Explorer:
Haga clic con el botón derecho en el nombre del proyecto -> Descargar proyecto
Haga clic con el botón derecho en el nombre del proyecto -> Editar .csproj
Elimina las siguientes líneas:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists(''../packages/Microsoft.Net.Compilers.1.0.0/build/Microsoft.Net.Compilers.props'')" Text="$([System.String]::Format(''$(ErrorText)'', ''../packages/Microsoft.Net.Compilers.1.0.0/build/Microsoft.Net.Compilers.props''))" />
<Error Condition="!Exists(''../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0/build/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'')" Text="$([System.String]::Format(''$(ErrorText)'', ''../packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0/build/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props''))" />
<Error Condition="!Exists(''packages/Microsoft.Net.Compilers.1.0.0/build/Microsoft.Net.Compilers.props'')" Text="$([System.String]::Format(''$(ErrorText)'', ''packages/Microsoft.Net.Compilers.1.0.0/build/Microsoft.Net.Compilers.props''))" />
<Error Condition="!Exists(''packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0/build/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'')" Text="$([System.String]::Format(''$(ErrorText)'', ''packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0/build/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props''))" />
</Target>
Haga clic con el botón derecho en el nombre del proyecto -> Recargar proyecto
Finalmente construya su solución.
.csproj
mi problema eliminando este código del archivo
.csproj
:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists(''$(SolutionDir)/.nuget/NuGet.targets'')" Text="$([System.String]::Format(''$(ErrorText)'', ''$(SolutionDir)/.nuget/NuGet.targets''))" />
</Target>