2015-12-25 44 views
21

provo ad installare il NuGet Microsoft.VisualStudio.QualityTools.UnitTestFramework in Visual Studio 2015 a progetto semplice e ottenuto questo messaggio:Nugets installano in Visual Studio 2015

Impossibile installare il pacchetto 'Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.0.30319.1' . Stai provando a installare questo pacchetto in un progetto destinato a ".NETFramework, Version = v4.5.2", ma il pacchetto non contiene riferimenti all'assembly o file di contenuti compatibili con tale framework. Per ulteriori informazioni, contattare l'autore del pacchetto.

Tuttavia, quando provo a installare questo pacchetto in Visual Studio 2013 nello stesso progetto, questo è lavoro.

Come posso installare questo nuget in Visual Studio 2015?

risposta

10

Il messaggio di errore sta dicendo che non esiste alcuna versione di nuget per la versione del framework.

In VS2013 Probabilmente si crea il progetto nella versione 4.5.0 o 4.0.0 di .Net framework.

Hai provato a cambiare la versione .Net del tuo progetto in 4.5.2?

+2

Ho cambiato la versione .Net del mio progetto in Visual Studio 2013 alla 4.5.2 e l'installazione ha avuto esito positivo. Ho anche provato a cambiare la versione .Net nel mio progetto in Visual Studio 2015 a 4.5 e ho ancora ricevuto questo errore. – ran

15

Il tempo è passato, ma mi sta accadendo e ho scoperto che non ha nulla a che fare con la versione del framework. Il testo importante del messaggio di errore è: "... ma il pacchetto non contiene riferimenti di assembly o file di contenuti ...".

In effetti, il mio pacchetto non ha alcun contenuto visibile per Nuget: ha una cartella non convenzionale con librerie native di terze parti e un Install.ps1 che aggiunge un evento post build con un comando Xcopy.

Come una svolta semplice, basta mettere un file fittizio nella cartella pacchetto contenuto o qualsiasi altro contenuto fittizio in lib, nodo file vuoto (non provato), ecc

EDIT 29/5/2017

Sto vedendo che questa risposta è utile per gli altri, ed è per questo che ho intenzione di elaborare un po 'di più.

come ho detto, il problema è che Nuget non vedere non v'è alcun contenuto nel pacchetto, ma può avere due cause:

  1. Il pacchetto in realtà non hanno contenuto visibile perché si muove il contenuto con uno script, ecc. (come nel mio caso), e quindi è necessario creare alcuni contenuti fittizi come inversione di tendenza.

  2. C'è un errore nelle specifiche di un pacchetto che deve avere contenuto (come nel caso di Evgeni Nabokov nei commenti), e quindi è necessario correggere le specifiche per mettere le cose a posto.

Ci scusiamo per il mio pessimo inglese.

+0

Sì, ho trovato le DLL nella cartella bin, non in lib. Questa era la ragione. –

+0

E per i file fittizi è meglio usare l'indicatore di file speciale (directory vuota) '_._'. – derigel

+0

@derigel si, sembra meglio, ci proverò. Grazie. – SERWare

1

Ho ottenuto questo e non aveva senso perché stavo già usando alcun problema su un progetto di framework 4.6 e l'errore mi diceva che non avrebbe funzionato sul framework 4.6 che sapevo essere falso.

Alla fine l'ho risolto facendo un altro progetto di test, copiando i file cs ecc dal mio vecchio progetto di test e poi installando UnitTestFramework attraverso NuGet. Funziona bene.

Quindi succede qualcosa che solo Microsoft può risolvere, ma credo che ricominciare da capo.

1

Ciò può accadere quando lo standard .NET della soluzione e il corrispondente pacchetto nuget non corrispondono. Si prega di controllare questo link: https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/ Quando si scorre verso il basso, c'è un'intestazione chiamata: Novità di .NET Standard 2.0? Sotto quell'intestazione, c'è una tabella. Hai o abbinare sia il framework e la versione standard di .NET. Preferisco .NET standard 1.4 e .NET Framework 4.6.1. Con la creazione dello standard .NET, Microsoft sta codificando il requisito di avere API coerenti su tutte le piattaforme .NET. Sembra che, una volta migrate le soluzioni a questo livello di compatibilità, "incompatibilità" o scoprendo di nuovo la rotella dopo ogni aggiornamento sarà una memoria del passato ...

0

Sembra che la creazione di un "Unit Test Project" invece di "Class Library" risolve il problema. Ho combattuto con la "Class Library" senza fortuna, ma la rimozione di quel progetto e la creazione di uno nuovo dal modello "Unit Test Project" è diventata con lo Microsoft.VisualStudio.QualityTools.UnitTestFramework versione 10.0.0.0 installata.

2

Ho riscontrato questo problema durante la creazione dei pacchetti di nuget in TeamCity, pubblicandoli in artifactory locale e quindi cercando di utilizzare tali pacchetti in altri progetti.

Al fine di evitare questo problema - in TeamCity, BuildSteps ==> NuGet Pack ==> Parametri pacchetto ==> File delle specifiche devi selezionare il file .csproj sul file nuspec e selezionare l'opzione "Preferisci i file di progetto su .nuspec "

Il pacchetto che costruirà in quel modo andrà bene per l'importazione e non più lamentele da parte di VS.

0

Ho trovato che DynamicInterop.0.8.1.nupkg ha il file dll in una cartella 'lib \ netstandard1.2'. Ho appena cambiato il nome della cartella in lib \ net40 e il pacchetto dovrebbe installare ok (I.m usando VS2013). Inoltre: il .nupkg è solo un file .zip, quindi qualsiasi strumento zip ti consente di manipolare il contenuto.

Problemi correlati