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
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.
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>
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
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.
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'))" />
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'))" />
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.
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.
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>
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.
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.
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" />
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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.
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.
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.
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=\"Web\" /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')" />
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.
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.
call "%VS140COMNTOOLS%VsDevCmd.bat"
call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
call nuget restore MyStuff.SLN
oder call nuget restore MyStuff.csproj
, wenn kein SLN vorhanden ist.