web-dev-qa-db-de.com

NuGet-Pakete fehlen

Ich habe dieses Problem durchsucht, aber keine der Lösungen hat funktioniert. Ich habe Visual Studio Professional 2015 installiert und verwende TFS. Meine NuGet-Version ist 3.1.6. Dieses Problem tritt nur in meinem C # Web API/MVC-Projekt auf.

Ich erhalte die folgende Fehlermeldung:

Dieses Projekt verweist auf NuGet-Pakete, die auf diesem .__ fehlen. Computer. Laden Sie sie mit NuGet Package Restore herunter. Für mehr Informationen finden Sie unter http://go.Microsoft.com/fwlink/?LinkID=322105 . Das fehlende Datei ist ..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props

  1. Ich habe keinen .nuget-Ordner in meinen Lösungen.
  2. Ich habe einen Paketordner in der Lösung und wenn ich ihn lösche, scheint NuGet die Abhängigkeiten neu aufzubauen, aber das Projekt hat immer noch den obigen Fehler.
  3. Ich habe versucht, das Projekt von TFS zu entfernen, und es wurde nicht behoben.
  4. Neben dem obigen Fehler weisen alle Referenzen im Projekt gelbe Warnzeichen auf und geben an, dass sie fehlen.
  5. Wenn ich den NuGet Package Manager für das Projekt geprüft habe, wird alles, was "fehlt", mit einem grünen Haken versehen, einschließlich Microsoft.Net.Compilers.
  6. Ich habe versucht, ein neues Web-API/MVC-Projekt hinzuzufügen, und es gab ein ähnliches Problem, bei dem die meisten Referenzen wie Owin mit dem gelben Warnzeichen "fehlten".
231
Ques Tion

Ich hatte heute den gleichen Fehler (genau das gleiche Paket fehlt). Ich habe auch ein MVC + Web API-Projekt erstellt.

Es geschah, weil ich die App-Dateien (einschließlich der .csproj-Datei) an einen anderen Speicherort verschoben habe. Ich habe die .sln-Datei manuell aktualisiert, aber jetzt sind alle Abhängigkeiten der Pakete (Visual Studio 2015) in der .csproj-Datei gespeichert. 

Das Bearbeiten der .csproj-Datei und das Korrigieren des relativen Pfads zum Lösungsordner (der den Paketordner enthält) hat das Problem für mich gelöst.

217
Tiberiu Craciun

Ich habe mein Problem gelöst, indem ich diesen Code aus der .csproj-Datei entfernt habe:

<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>
298
Dipal Kothari

ACHTUNG - dies aktualisiert Pakete für die gesamte Lösung und nicht nur das Projekt.

Wenn Sie ein weiteres fehlendes Nuget-Paket haben, das Ihren Fehler beim Erstellen Ihrer Lösung angibt, verwenden Sie den folgenden Befehl mit der Nuget-Befehlskonsole unter Extras> Nuget-Paket-Manager> Paket-Manager-Konsole. Es werden alle aktuellen Pakete neu installiert.

Update-Paket - neu installieren

41
Shyam Bhagat

Ich hatte genau diese frustrierende Nachricht. Was schließlich für mich funktioniert hat, war das Löschen aller Dateien und Ordner in/packages und das erneute Laden von VS beim nächsten Build.

15
Ryan Russon

Tiberiu ist richtig. Ich musste meine .csproj-Datei bearbeiten, da die Dateien verschoben wurden und dieses Problem verursacht hat

 <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')" />

Ich habe mich oben in der Datei und unten geändert 

<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'))" />
12
Tom Stickel

Ich habe dieses Problem behoben, indem ich den folgenden Code aus der .csproj-Datei entfernt habe

<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'))" />

11
Mohsin Awan

Eine Kombination der 2 Antworten funktionierte für mich. Zuerst habe ich die .csproj-Datei geändert, um den Verweis auf Version 1.0.0 zu entfernen 

< Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild" >

  ----Error---

< /Target>

und tat es dann 

Update-Package -Reinstall

von und es hat funktioniert.

8
Prakrithi

NuGet Package Restore aktivieren. Klicken Sie mit der rechten Maustaste auf Ihre Lösung und wählen Sie "NuGet Package Restore aktivieren".

 Right click your solution > choose 'Enable NuGet Package Restore'

Dadurch wird der .nuget-Ordner mit der NuGet.Config-Datei erstellt und das Problem behoben.

7
Nicow

Für mich bestand das Problem darin, dass beim Kopieren der Lösung in einen neuen Ordner und beim Öffnen der Ordner Nuget fehlte, wie unten gezeigt. Ich habe diesen Ordner kopiert und alles hat funktioniert. Hinweis: Dieser Ordner befand sich in unserer Quellcodeverwaltung, aber nicht in diesem Lösungsprojekt, sondern in einem Verzeichnis. 

 enter image description here

5
John Peters

Ich verwende VS2012 und stehe vor dem gleichen Fehler. Ich entfernte das folgende Target-Tag aus der .csproj-Datei und begann ohne Fehler zu kompilieren.

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  -- Error messages within Target Tag
</Target>
5
MAK

Um einige Antworten hier zu erläutern, können Sie den folgenden Block aus Ihrer .csproj-Datei entfernen:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

dies behebt das Problem. In meinem Fall fiel mir jedoch auf, dass ich zusätzliche Verweise auf .NET.Compilers und .CodeDom.Providers mit verschiedenen Versionen hatte:

<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\

Wenn meine packages.config nur auf Folgendes verweist:

<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"

Durch das Entfernen der 1.0.0-Elemente aus der .csproj-Datei wurde das Problem behoben. 

5

auf diese Weise wurde mein Fehler behoben: So öffnen Sie die .csproj-Datei zur Aktualisierung im Visual Studio 2015+ Solution Explorer:

Klicken Sie mit der rechten Maustaste auf Projektname -> Projekt entladen

Klicken Sie mit der rechten Maustaste auf den Projektnamen -> .csproj bearbeiten

Entfernen Sie die folgenden Zeilen:

<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>

Klicken Sie mit der rechten Maustaste auf Projektname -> Projekt neu laden

Erstellen Sie schließlich Ihre Lösung.

4
Abdullah

Für alle, die mit dem Problem, das ich hier hatte, stolpern (einige, aber nicht alle Pakete werden auf einem Build-Server wiederhergestellt werden), bestand das letzte Stück des Puzzles für mich darin, eine NuGet.config im Stammverzeichnis meiner Lösung hinzuzufügen, Geschwister dem .SLN Datei, wie David Ebbo hier erklärte: http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html .

Aus Ebbos Blogbeitrag geht es für mich einfach um den Dateiinhalt

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
</configuration>

UPDATE:

Die NuGet-API-URL wurde für Version 3 geändert (Stand: September 2016). Von https://www.nuget.org/

<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
2
madannes

Lösung, die in meinem Fall funktioniert - Visual Studio 2015 Enterprise, Projekt .NET 4.6.1

  1. Installieren Sie die Webentwickler-Tools

Visual studio installation wizzard

1
Norbert Rozmus

Die Fehlermeldung ist vollständig korrekt. Ich habe alle Tricks ausprobiert und keiner hat funktioniert. Das Projekt (einfacher MVC Web App-Test) wurde von Windows 8.1 VS 2015 Community in meine neue Testbox unter Windows 10 verschoben. Alle neuesten Updates für VS 2015 wurden angewendet. Ich konnte keine neuere Version des Compiler-Pakets installieren.

Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop

Ich habe schließlich Microsoft.Net.Compilers.1.0.0 gerade aus dem alten Projekt in das neue kopiert und es hat funktioniert. __ Ich könnte dann damit beginnen, andere Pakete auf eine neuere Version zu aktualisieren Bug für mich.

HINWEIS: Das ursprüngliche Projekt wurde in VS 2015 erstellt und verfügt nicht über ältere Nuget-Methoden.

1
Peter Ennis

Für mich waren die Pakete unter dem richtigen Pfad, die Build-Ordner im Paketordner jedoch nicht. Ich habe einfach alle Pakete entfernt, von denen behauptet wurde, dass sie fehlten, die Lösung neu erstellt und die Build-Ordner und die .props-Dateien erfolgreich erstellt wurden. Die Fehlermeldungen waren also richtig, um mich darüber zu informieren, dass etwas fehlgeschlagen ist.

1
Ian Hale

Ich hatte dieses Problem als fehlgeschlagenes Build in Azure, als es von Git bereitgestellt wurde.

Es stellte sich heraus, dass mein .gitignore den build-Ordner von ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props ausnahm.

Nachdem der build-Ordner an Git übergeben wurde, wurde das Problem behoben.

1
Neil Thompson

Ich habe eine Lösung für diesen Fehler gefunden. Eigentlich hatte ich eine andere Version von MSTest.TestAdapter (1.3.2) in meinem Paketordner und in .csproj-Dateiverweisen auf MSTest.TestAdapter (1.1.0). Ich habe alle MSTest.TestAdapter (1.1.0) zu MSTest.TestAdapter (1.3.2) ersetzt, und dadurch wurde mein Problem behoben.

1
Irshad Ahmed

Bei mir ignorierte meine Gititore-Datei meinen Paketordner. Die folgende gitignore-Zeile verursachte das Problem - 

**/packages/*

Entfernt und mein Paketordner wurde wiederhergestellt. Hoffe das hilft jemand anderem. 

0
bsod_

Das Problem für mich war, dass NuGet die Pakete nicht automatisch abrufen/aktualisieren konnte, da der vollständige Dateipfad zu groß wäre. Problem behoben, indem meine Lösung in einen Ordner in meinen Dokumenten verschoben wurde, statt in einen tief verschachtelten Ordner .

Sie können dann mit der rechten Maustaste auf die Lösung klicken und "NuGet-Pakete wiederherstellen" auswählen (was wahrscheinlich nicht erforderlich ist, wenn Sie es einfach erstellen und es für Sie erledigen lassen). Wählen Sie anschließend "NuGet-Pakete für Lösung verwalten" aus, um alle Pakete abzurufen auf die neueste Version aktualisiert.

Dies war für eine Lösung einer Beispiel-MVC-Anwendung ASP, die von der Microsoft-Website heruntergeladen wurde.

0
pkr298

Ich hatte das gleiche Problem. Es stellte sich heraus, dass sich eines der Projekte, auf die ich mich bezog, außerhalb des Lösungsverzeichnisses befand (und daher nicht denselben Ordner "/ packages" enthielt). Die Lösung, die für mich funktionierte, bestand darin, die Lösung des Referenzprojekts zu öffnen und dort zu erstellen. Sobald das Projekt aufgebaut war, gingen die Fehler weg.

0
bmontalvo

In meinem Fall fehlte <RestorePackages>true</RestorePackages> in der * .csproj-Datei. Es war nicht notwendig, Code-Schnipsel zu löschen, die ich in früheren Antworten gesehen habe.

0
Michal

Ein anderer Benutzername ist die häufigste Ursache dafür, Nuget lädt alles herunter in: "C:\Users\USER_NAME\source\repos" und wenn Sie das Projekt zuvor mit einem anderen Benutzernamen eingerichtet haben, enthält die .csproj-Datei möglicherweise noch diesen alten Dort den Benutzernamen eingeben, einfach öffnen und nach "C:\Users\_OLD_USER_NAME\source\repos" bis "C:\Users\NEW_USER_NAME\source\repos" suchen.

0
paul-2011

Da viele vorgeschlagen haben, das <Target>-Tag zu entfernen, kann es kompilierbar sein. Hüten Sie sich jedoch vor der Tatsache, dass es für Testprojekte einen Nebeneffekt hat. 

Beim Kompilieren habe ich einen Fehler bezüglich MSTest.TestAdapter nuget package erhalten. Dieses Problem wurde durch Entfernen des <Target>-Tags behoben. Obwohl der Aufbau erfolgreich war, wurden Testmethoden nicht auffindbar. Test Explorer listet die Testmethoden in diesem Projekt nicht auf und Run Test oder Debug Test funktionieren nicht so gut. 

Dies ist mir bei der Verwendung von Visual Studio 2017 und .Net framework 4.7 aufgefallen, es kann in anderen Versionen sehr gut vorkommen 

0
Saravanan

Mir ist klar, dass diese Frage alt ist, aber ich bin heute in die gleiche Situation geraten und wollte meine 2 Cent für alle, die diese Frage kürzlich gefunden haben, einwerfen. Ein MVC-Projekt ASP, das ich manuell in einen Unterordner in meiner Projektmappe verschoben und dann mit Visual Studio 2017 entfernt und in die Projektmappe eingelesen hatte, gab den genannten Fehler an. Das Verschieben der Ordner "lib" und "packages" in das Stammverzeichnis des gleichen Unterordners wie das MVC-Projekt hat mein Problem behoben.

0
J.P. Sietsma

Sie können die vorgeschlagene Fehlermeldung auch als Hinweis verwenden. So finden Sie das Paket zum Verwalten von Paketen für Lösungen, und klicken Sie auf das fehlende Nuget-Paket.

Das ist es

0
Parama Dharmika

Der Ordner in meiner Lösung hieß ".NET Project". Durch das Umbenennen in "NET Project" funktionierte alles einwandfrei. Der Punkt am Anfang war also eine schlechte Idee.

0

Ich konnte keine Lösung dafür finden, also fügte ich eine Kopie der Datei nuget.exe und ein Powershell-Skript im Stammverzeichnis der Lösung mit dem Namen prebuild.ps1 mit folgendem Inhalt hinzu.

$nugetexe = 'nuget.exe'
$args = 'restore SOLUTION_NAME_HERE.sln'
Start-Process $nugetexe -ArgumentList $args

Ich habe dieses Powershell-Skript in meinem Build im Pre-Build-Skriptpfadaufgerufen. enter image description here

0
Nick Rubino

Meine hat funktioniert, als ich den Paketordner zusammen mit der Lösungsdatei und dem Projektordner kopiert habe. Ich habe gerade keinen Ordner aus dem vorherigen Ordner kopiert.

0
user1429899

Kommentieren Sie die Compiler-Option in 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=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>-->

Aktualisieren Sie die neueste Version der Pakete in der Paketkonfigurationsdatei

  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.4" targetFramework="net452" />

Erstellen Sie alles neu, wenn alles in Ordnung ist, Sie müssen nicht fortfahren, andernfalls Klicken Sie mit der rechten Maustaste auf das Projekt, klicken Sie auf "Projekt entladen" Klicken Sie erneut mit der rechten Maustaste auf das Projekt, und bearbeiten Sie die .csproj-Datei

Überprüfen Sie den Pfad von Codedom, es gab kein net45 in vorherigen Pfaden, fügen Sie das manuell hinzu, speichern, laden und neu erstellen. Es sollte funktionieren.

<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')" />
0
Vikas Bansal

Nicht sicher, ob dies jemandem helfen wird, aber ich hatte dieses Problem, als ich den Quellcode von meinem lokalen Computer löschte, ohne die Lösungsdatei in TFS gespeichert zu haben. (Während der ersten Entwicklung wurde mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer geklickt und eingecheckt. Ich habe jedoch vergessen, die Lösung selbst zu überprüfen.) Als ich erneut daran arbeiten musste, hatte ich in TFS nur die .csproj-Datei. keine .sln-Datei. Also habe ich in VS eine Datei -> Quellcodeverwaltung -> Erweitert - Vom Server aus geöffnet und die .csproj-Datei geöffnet. Von dort aus habe ich ein Save All erstellt und es wurde gefragt, wo ich die .sln-Datei speichern möchte. Ich habe diese .sln-Datei mit den anderen Ordnern (App_Data, App_Start usw.) im Projektverzeichnis gespeichert, nicht im obersten Verzeichnis. Ich habe schließlich herausgefunden, dass ich die .sln-Datei in einem Verzeichnis aus dem Projektordner speichern muss, damit es auf derselben Ebene wie der Projektordner liegt. Alle meine Pfade lösten sich und ich konnte es wieder aufbauen. 

0
chersull_99

Für DevOps-/Build-Ingenieure können Sie dies wahrscheinlich mit dem betroffenen nuget restore für den betroffenen SLN beheben oder ein Projekt, wenn Sie keinen SLN haben. Ich muss dies für unsere CI/CD-Builds für alle unsere UWP-Projekte tun.

  1. Stellen Sie sicher, dass das Nuget auf dem Build-Slave in Visual Studio oder Standalone installiert ist. Wenn es sich um letzteres handelt, stellen Sie sicher, dass es sich in PATH befindet, und überspringen Sie Schritt 2.
  2. Öffnen Sie entweder die VS Dev CMD-Konsole oder laden Sie sie über eine bereits geöffnete Konsole, die Sie mit den folgenden Anweisungen ausführen können:
    VS2015 call "%VS140COMNTOOLS%VsDevCmd.bat"
    oder
    VS2017 call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat" 
  3. call nuget restore MyStuff.SLN oder call nuget restore MyStuff.csproj, wenn kein SLN vorhanden ist.
0