2016-03-23 17 views
32

Sto usando VS 2015.Il progetto non fa riferimento al framework ".NETFramework, Version = v4.5".

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

sto ottenendo questo errore sul mio livelli di accesso ai dati e Business Logic, poco dopo aver aggiunto alla mia layer MVC. Le cose stavano andando bene fino ad allora, ma non so cosa abbia causato questo errore. Qui è la mia 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 che cosa ho provato:

  1. Sostituzione "dotnet5.4" con "net451" (e l'eliminazione di esso) come si trova in this answer.

Il risultato è lo stesso errore.

  1. Sostituire "dotnet5.4" con "net45" e uscire da "net451". Ciò si traduce in un nuovo errore:

Your project.json doesn't have a runtimes section. You should add '"runtimes": { "win":{} }' to your project.json and then re-run NuGet restore.

Ho provato a fare questo errore come suggerito e aggiungendo

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

Questo mi ha fatto questo errore, che io non riesco a spostare passato:

Your project.json doesn't list 'win' as a targeted runtime. You should add '"win": {}' inside your "runtimes" section in your project.json, and then re-run NuGet restore.

Ho già aggiunto "vittoria", e questo sta cominciando a sembrare un'aringa rossa. Cosa sto facendo alterando direttamente il progetto.json, NuGet non sta gestendo questo?

+0

Per la prima parte andare alle impostazioni di progetto e impostare framework di destinazione a 4,5 –

+0

Viene impostato in quel modo già. –

+1

@ S.LovelandECY Hai risolto questo problema? Ho lo stesso problema se utilizzo 4.5.1, 4.5.2 o 4.6 - Tutti i miei progetti utilizzano sicuramente la stessa versione di framework. – Thierry

risposta

7

In realtà ho appena capito il problema. Ho finito per fare clic su Restore Nuget Packages a livello di soluzione e sono riuscito a compilare il mio file PCL e quindi il resto della mia soluzione.

Spero che questo aiuti.

+0

Eccellente, grazie! –

23

Inoltre, ho trovato oggi che c'era un rogue project.lock.json che stava causando questo problema per me. Una volta cancellato il file, il problema è andato via.

52

Ho avuto lo stesso problema e ho dovuto eliminare non solo il contenuto delle cartelle bin e obj, ma anche la directory .vs per la soluzione.

+0

.vs stava causando il problema per me – Lukas

+2

questa era la soluzione per me! – riki

+3

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

40

Ho avuto lo stesso problema: 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 il file obj\project.assets.json (a seconda della versione di VS) di una build precedente, che non viene rimosso durante una pulizia, as described here.

L'eliminazione manuale della directory /obj rappresenta una soluzione rapida.

Se si dispone di un progetto "nuovo" (ad esempio, .NET Core o progetto netstandard creato in VS 2017) e un progetto "vecchio" nella stessa directory (ad es. Progetto .NET 4.6 creato in VS 2015), sembra che combatteranno continuamente perché entrambi usano la directory ./obj in modi diversi. More info here..

La soluzione di creazione di ms consiste nel fare in modo che uno dei progetti utilizzi una diversa dir. obj. Ho aggiunto questo 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> 
+2

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

+2

Brillante. Ottima spiegazione pure. –

+0

Lasciatemi aggiungere i miei ringraziamenti. La cancellazione di tutte le cartelle "obj" che hanno subito l'infrazione ha risolto anche il mio problema. – Stuart

1

Ho avuto lo stesso problema dopo l'aggiornamento a Visual Studio for 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 alcun progetto di JSON File. Anche i suggerimenti qui non sono stati d'aiuto, quindi ho dovuto scoprire il modo in cui dovevo installare l'ultimo SDK Android (Oreo 8.1) oltre al mio SDK di destinazione (Nougat 7.1).

enter image description here

Problemi correlati