Su proyecto no hace referencia al marco ".NETFramework, Version = v4.5".

91

Estoy usando VS 2015.

Su proyecto no hace referencia al marco ".NETFramework, Version = 4.5". Agregue una referencia a ".NETFramework, Version = 4.5" en la sección "frameworks" de su project.json y luego vuelva a ejecutar NuGet restore.

Recibo este error en mis capas de acceso a datos y lógica empresarial, poco después de agregarlo a mi capa MVC. Las cosas iban bien hasta entonces, pero no sé qué provocó este error. Aquí está mi project.json:

{
  "version": "1.0.0-*",
  "description": "foo bar Class Library",
  "authors": [ "foo bar" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "frameworks": {
    "net451": { },
    "dotnet5.4": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Threading": "4.0.11-beta-23516"
      }
    }
  }
}

Esto es lo que he probado:

  1. Reemplazar "dotnet5.4" con "net451" (y eliminarlo) como se encuentra en esta respuesta .

El resultado es el mismo error.

  1. Reemplazando "dotnet5.4" por "net45" y dejando el "net451". Esto resulta en un nuevo error:

Tu project.json no tiene una sección de tiempos de ejecución. Debe agregar '"runtimes": {"win": {}}' a su project.json y luego volver a ejecutar NuGet restore.

Intenté hacer lo que sugería este error y agregar

"runtimes": {
    "win":  {}
  },

Esto me dio este error, que parece que no puedo superar:

Su project.json no enumera 'win' como un tiempo de ejecución específico. Debe agregar '"win": {}' dentro de su sección "runtimes" en su project.json, y luego volver a ejecutar NuGet restore.

Ya he añadido "ganar", y esto empieza a parecer una pista falsa. ¿Qué estoy haciendo alterando el project.json directamente? ¿NuGet no está manejando esto?

S. Loveland ECY
fuente
Para la primera parte, vaya a la configuración de su proyecto y configure Target Framework en 4.5
Hirbod Behnam
Ya está configurado de esa manera.
S. Loveland ECY
1
@ S.LovelandECY ¿Resolviste esto? Tengo el mismo problema ya sea que use 4.5.1, 4.5.2 o 4.6: todos mis proyectos definitivamente usan la misma versión de marco.
Thierry
@ S.LovelandECY, es posible que desee considerar cambiar la respuesta aceptada dada la disparidad entre los votos entre ella y la respuesta más votada
RJFalconer

Respuestas:

10

De hecho, acabo de descubrir el problema. Terminé haciendo clic Restore Nuget Packagesen el nivel de la solución y logré compilar mi PCLarchivo y luego el resto de mi solución.

Espero que esto ayude.

Thierry
fuente
1
esta respuesta es lo que fue relevante para mí.
kovac
187

Tuve el mismo problema y terminé teniendo que eliminar no solo el contenido de biny las objcarpetas, sino también el .vsdirectorio de la solución.

Chris R. Donnelly
fuente
1
.vs me estaba causando el problema
Lukas
7
esta fue la solución para mi!
Riki
9
.vs no era necesario para mí. ¡Gracias!
geynske006
2
No tengo ni idea de cómo agradecerles adecuadamente. He estado rascándome la cabeza durante la mayor parte de una hora tratando de resolver esto. borró los 3 y funciona como un encanto. +1
tfrascaroli
2
Tengo la sospecha de que este problema se debe al cambio de ramas de GitHub en mi caja de desarrollo local. Es decir, trabajo en una rama y la compilación crea numerosos archivos que no forman parte del repositorio. Luego verifico una rama diferente, y estos archivos que no son del repositorio todavía están en su lugar. De alguna manera entran en conflicto con los archivos recién extraídos.
Phoeniceus Agelaius
127

Tuve el mismo problema: esto ocurre aún usando Visual Studio 2017.3, que usa archivos .csproj en lugar de project.json. Curiosamente, el mensaje de error todavía contiene el texto "project.json".

Parece que la causa de este problema es un archivo de bloqueo o un obj\project.assets.jsonarchivo (según su versión de VS) de una compilación anterior, que no se elimina durante una limpieza, como se describe aquí .

Eliminar manualmente el /objdirectorio es una solución rápida.

Si tiene un proyecto "nuevo" (por ejemplo, .NET Core o proyecto netstandard creado en VS 2017) y un proyecto "antiguo" en el mismo directorio (por ejemplo, proyecto .NET 4.6 creado en VS 2015), parece que lucharán continuamente porque ambos usan el ./objdirectorio de diferentes maneras. Más info aquí. .

La solución alternativa de msbuild es hacer que uno de sus proyectos use un objdirectorio diferente . Agregué esto a mi "antiguo" csproj:

<PropertyGroup>
  <!-- Needed due to old project and new project in same directory: https://github.com/NuGet/Home/issues/5126 -->
  <BaseIntermediateOutputPath>obj_netfx\</BaseIntermediateOutputPath>
</PropertyGroup>
crimbo
fuente
4
Esta solución funciona bien con VS 2017, me salvó a tiempo.
MechanicalCoder
2
Brillante. Gran explicación también.
Mick Byrne
1
Permítanme agregar mi agradecimiento. Eliminar todas las carpetas "obj" ofensivas también resolvió mi problema.
Stuart
2
¡Dios te bendiga! Me preguntaba dónde está el maldito archivo project.json. Eliminar / obj lo hizo
Vishnoo Rath
1
Sigue siendo un problema incluso en VS 2019. ¡Gracias por la solución!
usuario2363676
27

Descubrí que un project.lock.json no autorizado me estaba causando este problema. Una vez que eliminé el archivo, el problema desapareció.

Aquí hay algo de documentación sobre project.lock.json.

Otro consejo sería asegurarse de que project.lock.json se ignore en su archivo git ignore y probar un git clean completo. Sin embargo, asegúrese de comprender las implicaciones de una limpieza de Git antes de hacerlo.

Christian Findlay
fuente
2

Tuve el mismo problema después de actualizar a Visual Studio para Mac 7.4 (compilación 1033):

Error: Your project is not referencing the "MonoAndroid,Version=v7.1" framework. Add a reference to "MonoAndroid,Version=v7.1" in the "frameworks" section of your project.json, and then re-run NuGet restore.

No tengo ningún archivo de proyecto json. Los consejos aquí tampoco ayudaron, así que tuve que averiguar por las malas que tenía que instalar el último SDK de Android (Oreo 8.1) además de mi SDK de destino (Nougat 7.1).

ingrese la descripción de la imagen aquí

Waescher
fuente
0

Tengo el mismo problema, pero lo resolví agregando el recurso de paquete de nugget adecuado en vs2017-->tools-->options-->Nugetpacakge manager--->updatedla URL del paquete correspondiente.

Consulte la imagen de abajo

ingrese la descripción de la imagen aquí

ch sandeep kumar
fuente