Il progetto non fa riferimento al framework ".NETFramework, Version = v4.5".


91

Sto usando VS 2015.

Il progetto non fa riferimento al framework ".NETFramework, Version = 4.5". Aggiungi un riferimento a ".NETFramework, Version = 4.5" nella sezione "framework" del tuo project.json, quindi esegui nuovamente NuGet Restore.

Ricevo questo errore sui miei livelli di accesso ai dati e logica di business, subito dopo l'aggiunta al mio livello MVC. Le cose stavano andando bene fino ad allora, ma non so cosa abbia causato questo errore. Ecco il mio 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"
      }
    }
  }
}

Ecco cosa ho provato:

  1. Sostituendo "dotnet5.4" con "net451" (ed eliminandolo) come si trova in questa risposta .

Il risultato è lo stesso errore.

  1. Sostituendo "dotnet5.4" con "net45" e lasciando "net451". Ciò si traduce in un nuovo errore:

Il tuo project.json non ha una sezione runtime. È necessario aggiungere "" runtimes ": {" win ": {}}" al file project.json e quindi eseguire nuovamente NuGet Restore.

Ho provato a fare come suggerito da questo errore e ad aggiungere

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

Questo mi ha portato questo errore, che non riesco a superare:

Il tuo project.json non elenca "win" come runtime mirato. È necessario aggiungere "" win ": {}" nella sezione "runtime" nel file project.json, quindi eseguire nuovamente il ripristino NuGet.

Ho già aggiunto "win", e questo comincia a sembrare una falsa pista. Cosa sto facendo modificando direttamente project.json, NuGet non lo gestisce?


Per la prima parte vai alle impostazioni del tuo progetto e imposta Target Framework su 4.5
Hirbod Behnam

È già impostato in questo modo.
S. Loveland ECY

1
@ S.LovelandECY Hai risolto il problema? Ho lo stesso problema sia che utilizzo 4.5.1, 4.5.2 o 4.6 - Tutti i miei progetti utilizzano decisamente la stessa versione del framework.
Thierry

@ S.LovelandECY potresti prendere in considerazione la possibilità di modificare la risposta accettata data la disparità tra i voti tra essa e la risposta con il voto più alto
RJFalconer

Risposte:


10

In realtà ho appena scoperto il problema. Ho finito per fare clic su Restore Nuget Packagesa livello di soluzione e sono riuscito a compilare il mio PCLfile, quindi il resto della mia soluzione.

Spero che questo ti aiuti.


1
questa risposta è ciò che era rilevante per me.
kovac

186

Ho avuto lo stesso problema e ho finito per dover eliminare non solo il contenuto di bine le objcartelle, ma anche la .vsdirectory per la soluzione.


1
.vs stava causando il problema per me
Lukas

7
questa era la soluzione per me!
Riki

9
.vs non era necessario per me. Grazie!
geynske006

2
Non ho idea di come ringraziarti adeguatamente. Mi sono grattato la testa per quasi un'ora cercando di capirlo. cancellati tutti e 3 e funzionanti a meraviglia. +1
tfrascaroli

2
Ho il sospetto che questo problema sia causato dal cambio di rami GitHub sulla mia casella di sviluppo locale. Cioè, lavoro in un ramo e la compilazione crea numerosi file che non fanno parte del repository. Quindi eseguo il checkout in un ramo diverso e questi file non di repository sono ancora al loro posto. In qualche modo entrano in conflitto con i file appena estratti.
Phoeniceus Agelaius il

127

Ho avuto lo stesso problema: ciò si verifica ancora utilizzando Visual Studio 2017.3, che utilizza file .csproj anziché project.json. È interessante notare che il messaggio di errore contiene ancora il testo "project.json".

Sembra che la causa di questo problema sia un file di blocco o un obj\project.assets.jsonfile (a seconda della versione di VS) di una build precedente, che non viene rimosso durante una pulizia, come descritto qui .

L'eliminazione manuale della /objdirectory è una soluzione rapida.

Se hai un progetto "nuovo" (es. .NET Core o progetto netstandard creato in VS 2017) e un progetto "vecchio" nella stessa directory (es. Progetto .NET 4.6 creato in VS 2015), sembra che combatteranno continuamente perché entrambi usano l'estensione ./obj directory in modi diversi. Maggiori info qui. .

La soluzione alternativa di msbuild consiste nel fare in modo che uno dei tuoi progetti utilizzi una directory diversa obj. L'ho aggiunto al mio "vecchio" 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>

4
Questa soluzione alternativa funziona bene con VS 2017, mi hai salvato in tempo.
MechanicalCoder

2
Brillante. Ottima anche la spiegazione.
Mick Byrne

1
Lasciami aggiungere i miei ringraziamenti. L'eliminazione di tutte le cartelle "obj" offensive ha risolto anche il mio problema.
Stuart

2
Dio ti benedica! Mi stavo chiedendo dove sia il dannato file project.json. L'eliminazione / obj lo ha fatto
Vishnoo Rath

1
Ancora un problema anche in VS 2019. Grazie per la soluzione!
user2363676

27

Ho scoperto che un progetto canaglia.lock.json stava causando questo problema per me. Una volta eliminato il file, il problema è scomparso.

Qui documentazione su project.lock.json.

Un altro consiglio sarebbe quello di assicurarsi che project.lock.json venga ignorato nel file git ignore e di provare una pulizia completa di git. Assicurati di aver compreso le implicazioni di una pulizia Git prima di farlo però.


2

Ho avuto lo stesso problema dopo l'aggiornamento a Visual Studio per Mac 7.4 (build 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.

Non ho file di progetto JSON. Anche i suggerimenti qui non hanno aiutato, quindi ho dovuto scoprire nel modo più duro che dovevo installare l'ultimo SDK Android (Oreo 8.1) oltre al mio SDK di destinazione (Nougat 7.1).

inserisci qui la descrizione dell'immagine


0

Ho lo stesso problema, ma l'ho risolto aggiungendo la risorsa del pacchetto nugget appropriata all'URL del pacchetto vs2017-->tools-->options-->Nugetpacakge manager--->updatedcorretto.

Fare riferimento all'immagine sottostante

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.