NuGet-Pakete fehlen

297

Ich habe dieses Problem gesucht, 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 Computer fehlen. Verwenden Sie NuGet Package Restore, um sie herunterzuladen. Weitere Informationen finden Sie unter http://go.microsoft.com/fwlink/?LinkID=322105 . Die fehlende Datei lautet .. \ 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 zu erstellen, aber das Projekt hat immer noch den obigen Fehler.
  3. Ich habe versucht, das Projekt aus TFS zu entfernen, aber es wurde nicht behoben.
  4. Zusammen mit dem obigen Fehler haben alle Referenzen im Projekt gelbe Warnzeichen und sagen, dass sie fehlen.
  5. Als ich den NuGet Package Manager für das Projekt überprüfte, wurde neben allem, was "fehlt", ein grünes Häkchen angezeigt, 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".
Fragen Tion
quelle
Stimmen zum Schließen dieser Frage aufgrund der Schermenge von Antworten von neuen Benutzern mit geringer Qualität.
ZF007

Antworten:

265

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

Es passierte, weil ich die App-Dateien (einschließlich der .csproj) -Datei an einen anderen Speicherort verschoben habe. Ich habe die SLN-Datei manuell aktualisiert, aber alle Paketabhängigkeiten werden jetzt (Visual Studio 2015) in der CSsproj-Datei gespeichert.

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

Tiberiu Craciun
quelle
2
Das Kopieren des Ordners Microsoft.Net.Compilers ... aus dem alten Paketordner in den neuen Speicherort für Pakete nach einem Umzug, falls dieser fehlt, ist möglicherweise ein letzter erforderlicher Schritt.
Justin Wignall
2
Ich habe gerade dieses EINE Paket von meinem Computer entfernt und es hat funktioniert.
SpoiledTechie.com
1
Ich habe auch den Fehler erhalten, wenn ein Projekt physisch an einen anderen Speicherort in der Visual Studio-Lösung verschoben wurde. Keine der Lösungen auf dieser Seite hat funktioniert, daher habe ich eine Kopie des Projekts (im Dateisystem) erstellt und alle Verweise auf das ursprüngliche Projekt in VS vollständig entfernt. Ich habe dann das Projekt neu erstellt und die Teile darin kopiert (von der Kopie, die ich gemacht habe). Mühsam, aber es hat funktioniert.
Andrew Jens
2
Ich hatte auch das gleiche Problem, nachdem ich das Projekt von einem Ort an einen anderen verschoben hatte. Das Problem wurde behoben, indem der Pfad der Pakete in der Datei ".csproj" behoben wurde.
Nirman
2
@ MiłoszWieczorek Ich habe versucht, den Befehl in der Package Manager-Konsole auszuführen, aber das Problem wurde nicht behoben. Es wurden alle Pakete neu geladen, aber die Referenzen wurden immer noch nicht gefunden.
Francisco d'Anconia
360

Ich habe mein Problem gelöst, indem ich diesen Code aus der .csprojDatei 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>
DKR
quelle
5
Akzeptierte Antworten würden nicht funktionieren, da ich das Projekt in mehreren separaten Lösungen referenziere. Dies war die einzige Lösung. Kommentierte es aus und es funktionierte wie ein Zauber.
Levi Fuller
31
Ich könnte mich irren, aber ich glaube, das ist "die Fliege mit dem Hammer schlagen". Wenn der veröffentlichte Speicherort aus irgendeinem Grund ein anderes erforderliches Nuget-Paket verliert, tritt kein Fehler auf, und Sie erhalten ein falsches Positiv (dh die Bereitstellung ist erfolgreich, das System schlägt jedoch fehl). Kein Fan, aber ich werde es nicht ablehnen, weil es Aspekte von Nuget gibt, mit denen ich noch nicht vertraut bin.
HeyZiko
4
Das hat auch bei mir funktioniert. Seltsam, dass die Fehlermeldung in der Projektdatei selbst fest codiert war ...
Ryan Peters
7
Es wurde bestätigt, dass dieses Problem in VS 2017 weiterhin besteht. Ich habe ein Projekt von Visual Studio 2015 auf 2017 migriert und diese Fehlermeldung beim ersten Kompilieren im Jahr 2017 erhalten. Dadurch wurde der Fehler behoben.
Tom McDonald
2
Warum sollten Sie Funktionen löschen, Ihr Projekt brechen usw.? Wie @HeyZiko betont, kann dies später zu Problemen führen. Ich könnte einfach tun, was der Fehler "Paketwiederherstellung aktivieren" besagt. Siehe meine Antwort irgendwo auf dieser Seite ...
Nicow
45

ACHTUNG - Hiermit werden Pakete für die gesamte Lösung aktualisiert, nicht nur für das Projekt.

Wenn Sie ein weiteres fehlendes Nuget-Paket haben, das beim Erstellen Ihrer Lösung einen Fehler verursacht, verwenden Sie den folgenden Befehl mit der Nuget-Befehlskonsole unter Extras> Nuget-Paketmanager> Paketmanager-Konsole. Alle aktuellen Pakete werden neu installiert.

Update-Package –reinstall

Aktualisieren:

Sie können einen bestimmten Projektnamen als Parameter übergeben.

Update-Package –reinstall -ProjectName SampleApp
Shyam Bhagat
quelle
1
Das hat bei mir funktioniert. Der Fehler trat für mich auf, nachdem ich Änderungen auf einem System durch git geschoben und auf einem anderen gezogen hatte. Möglicherweise ist mein .gitignore nicht richtig für Nuget-Pakete konfiguriert.
Patrick Borkowicz
16
Achtung ... dies aktualisiert Pakete für die gesamte Lösung, nicht nur für das Projekt.
SO Benutzer
1
Das hat bei mir funktioniert. NuGet beschwerte sich immer wieder über fehlende Pakete, aber Visual Studio löste sich nicht automatisch auf. Es dauerte ein paar Minuten, bis es vollständig ausgeführt wurde, aber dieser Befehl hat mein Problem behoben.
Nick Alexander
8
Sie können den Parameter -ProjectName hinzufügen, um ihn nur für ein bestimmtes Projekt und nicht für die gesamte Lösung festzulegen.
Miłosz Wieczorek
2
VS2017 stürzte auf halbem Weg ab und es brach alles
rollt
19

Ich hatte genau diese frustrierende Nachricht. Was schließlich für mich funktioniert hat, war, alle Dateien und Ordner in / packages zu löschen und VS beim nächsten Build alles erneut abrufen zu lassen.

Ryan Russon
quelle
2
Ich habe mit der rechten Maustaste auf die Lösung geklickt und Restore Nuget Packages.
Vitor Canova
1
Ich habe kein Restore Nuget-Paket, wenn ich mit der rechten Maustaste auf Lösung klicke. Ich verwende VS 2013.
Ziggler
musste auch sicherstellen, dass es das richtige Paket wiederherstellt. Überprüfen Sie die .csproj mit note / Edit * .csproj für den Speicherort des
Paketordners
15

Tiberiu ist richtig. Ich musste meine .csproj-Datei bearbeiten, als die Dateien verschoben wurden und dieses Problem verursachten

 <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 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'))" />
Tom Stickel
quelle
Was am Ende für mich funktioniert hat, war, nur die Zeile am Ende der Datei zu bearbeiten, aber nicht oben
ISAE
15

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

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

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

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 endlich Ihre Lösung.

Abdullah
quelle
Nachdem ich die Pfade in csproj manuell korrigiert hatte, entfernte ich den Abschnitt EnsureNuGetPackageBuildImports und es funktionierte perfekt. danke
willyMon
11

Ich habe dieses Problem gelöst, 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'))" />

Mohsin Awan
quelle
1
Aber warum wo diese überhaupt falsch sind? Fehler in Visual Studio?
Beschützer ein
8

Eine Kombination der beiden Antworten hat bei mir funktioniert. Zuerst habe ich die .csproj-Datei geändert, um den Verweis auf die Version 1.0.0 zu entfernen

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

  ----Error---

< /Target>

und dann tat

Update-Package -Reinstall

von der und es hat funktioniert.

Prakrithi
quelle
6

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

Geben Sie hier die Bildbeschreibung ein

John Peters
quelle
6

Aktivieren Sie einfach die NuGet-Paketwiederherstellung. Klicken Sie mit der rechten Maustaste auf Ihre Lösung und wählen Sie "NuGet-Paketwiederherstellung aktivieren".

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

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

Nicow
quelle
Vielen Dank!! Auch ich sah mich einer ähnlichen Situation gegenüber und 'NuGet Package Restore aktivieren' funktionierte.
Jain Prince
18
Es hat für mich nicht wok, es heißt "Alle Pakete sind bereits installiert und es gibt nichts wiederherzustellen."
Dalibor
5

Ich verwende VS2012 und habe den gleichen Fehler. Ich habe das folgende Target-Tag aus der .csproj-Datei entfernt und es wurde ohne Fehler kompiliert.

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

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

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

Dies behebt das Problem. In meinem Fall habe ich jedoch festgestellt, dass ich zusätzliche Verweise auf die .NET.Compiler und .CodeDom.Provider mit unterschiedlichen 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 verwies:

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

Das Entfernen der 1.0.0-Elemente aus der .csproj-Datei hat das Problem behoben.

Brian Vander Plaats
quelle
2

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

Aus Ebbos Blog-Post geht hervor, dass der Dateiinhalt für mich einfach ist

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

AKTUALISIEREN:

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" />
Madannes
quelle
1

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 auf meine neue Testbox unter Windows 10 verschoben. Es wurden alle neuesten Updates für VS 2015 angewendet. Ich konnte nicht einmal eine neuere Version des Compiler-Pakets installieren.

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

Ich habe schließlich gerade Microsoft.Net.Compilers.1.0.0 vom alten Projekt in das neue kopiert und es hat funktioniert. Ich könnte dann anfangen, andere Pakete auf eine neuere Version zu aktualisieren. Sieht für mich nach einem Fehler beim Upgrade des Nuget-Projekts aus.

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

Peter Ennis
quelle
1

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

  1. Upgrade auf Update 3
  2. Installieren Sie Webentwickler-Tools

Visual Studio Installations-Wizzard

Norbert Rozmus
quelle
1

Für mich befanden sich die Pakete unter dem richtigen Pfad, die Build-Ordner im Paketordner jedoch nicht. Ich habe einfach alle fehlenden Pakete entfernt und die Lösung neu erstellt und die Build-Ordner und die .props-Dateien erfolgreich erstellt. Die Fehlermeldungen haben mich also korrekt darüber informiert, dass etwas fehlgeschlagen ist.

Ian Hale
quelle
1

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

Es stellte sich heraus, dass mein .gitignore den buildOrdner von ausgeschlossen hat ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props.

Sobald der buildOrdner für Git festgeschrieben wurde, wurde das Problem behoben.

Neil Thompson
quelle
1

Ich habe das gleiche Problem mit den folgenden Schritten gelöst

  1. Paket <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net46" />aus der Datei package.config entfernt.
  2. Bearbeiten Sie die .csproj-Projektdatei und entfernen Sie die folgenden Einstellungen. <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.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />   </Target>

    1. Gehen Sie zur Paketmanagerkonsole und führen Sie den Befehl aus Update-Package –reinstall

Punkt 2 und 3 wurden von anderen Benutzern gegeben und ich schätze diese Benutzer. Punkt 1, das Entfernen der Microsoft.CodeDom.Providers.DotNetCompilerPlatformDatei package.config ist wichtiger. Nachdem der in Punkt 3 genannte Befehl ausgeführt wurde, wurde das Problem behoben. Alle unerwünschten Pakete wurden entfernt und die erforderliche Paketreferenz aktualisiert.

Hoffe das hilft jemandem.

Karthik
quelle
0

Ich konnte keine Lösung dafür finden und fügte dem Stammverzeichnis der Lösung namens prebuild.ps1 eine Kopie der Datei nuget.exe und ein Powershell-Skript mit dem folgenden 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- Skriptpfad aufgerufen Geben Sie hier die Bildbeschreibung ein

Nick Rubino
quelle
0

Meins funktionierte, als ich den Paketordner zusammen mit der Lösungsdatei und dem Projektordner kopierte. Ich habe den Paketordner einfach nicht vom vorherigen Ort kopiert.

user1429899
quelle
0

Sie können die vorgeschlagene Fehlermeldung auch als Hinweis verwenden. Hier erfahren Sie, wie Sie die Pakete für Lösung verwalten suchen und auf das fehlende Nuget-Paket zum Auflösen klicken.

Das ist es

Parama Dharmika
quelle
0

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

Neu erstellen, 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, da in vorherigen Pfaden kein net45 vorhanden war. Fügen Sie diesen 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')" />
Vikas Bansal
quelle
0

Wie viele vorgeschlagen haben, <Target>kann das Entfernen des Tags kompilierbar sein. Beachten Sie jedoch, dass dies einen Nebeneffekt hat, wenn Sie dies für Testprojekte tun.

MSTest.TestAdapterBeim Kompilieren ist ein Fehler im Zusammenhang mit dem Nuget-Paket aufgetreten. Dieses Problem wurde durch Entfernen des <Target>Tags behoben. Obwohl der Build erfolgreich war, konnten die Testmethoden nicht mehr entdeckt werden. Der Test Explorer listet die Testmethoden in diesem Projekt nicht auf und Run Test oder Debug Test funktionieren ebenfalls nicht.

Ich habe dies während der Verwendung festgestellt Visual Studio 2017und .Net framework 4.7es kann sehr gut in anderen Versionen passieren

Saravanan
quelle
1
Ich habe genau dieses Problem mit VS2017, .Net4.7 und einem Unit-Test-Projekt. Dieses Projekt wird mehreren Lösungen hinzugefügt. Die automatische Wiederherstellung funktioniert aber am falschen Ort. Durch $(SolutionDir)Arbeit ersetzen , aber Aktualisierung schlägt fehl. Ich fragte , dass hier . Haben Sie eine Lösung gefunden?
Sebastian Schumann
0

Das Problem für mich war, dass NuGet die Pakete nicht automatisch abrufen / aktualisieren konnte, da der vollständige Dateipfad zu groß wäre. Behoben durch Verschieben meiner Lösung in einen Ordner in meinen Dokumenten anstelle eines tief verschachtelten Ordners .

Klicken Sie dann mit der rechten Maustaste auf die Lösung und wählen Sie "NuGet-Pakete wiederherstellen" (was wahrscheinlich nicht erforderlich ist, wenn Sie es nur erstellen und für Sie erledigen lassen). Wählen Sie dann "NuGet-Pakete für Lösung verwalten", um alle Pakete abzurufen auf die neueste Version aktualisiert.

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

pkr298
quelle
0

Für DevOps / Build-Ingenieure können Sie dieses nuget restoreProblem wahrscheinlich beheben , wenn es für das betroffene SLN ausgeführt wird, oder für ein Projekt, wenn Ihnen ein SLN fehlt. Ich muss dies für unsere CI / CD-Builds für alle unsere UWP-Projekte tun.

  1. Stellen Sie sicher, dass Nuget auf dem Build-Slave entweder in Visual Studio oder eigenständig installiert ist. Wenn es das letztere ist, 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, was Sie mit den folgenden Anweisungen tun können:
    VS2015 call "%VS140COMNTOOLS%VsDevCmd.bat"
    oder
    VS2017call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
  3. call nuget restore MyStuff.SLNoder call nuget restore MyStuff.csprojwenn es keine SLN gibt.
kayleeFrye_onDeck
quelle
0

Ich bin mir nicht sicher, ob dies jemandem helfen wird, aber dieses Problem trat auf, als ich den Quellcode von meinem lokalen Computer löschte, ohne die Lösungsdatei jemals in TFS gespeichert zu haben. (Während der ersten Entwicklung habe ich mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer geklickt und es eingecheckt, aber vergessen, jemals die Lösung selbst einzuchecken.) Als ich erneut daran arbeiten musste, war alles, was ich in TFS hatte, die .csproj-Datei. keine .sln-Datei. Also habe ich in VS eine Datei -> Quellcodeverwaltung -> Erweitert - Vom Server öffnen und die .csproj-Datei geöffnet. Von dort aus habe ich alles gespeichert und 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 mit dem Verzeichnis der obersten Ebene. Ich habe endlich herausgefunden, dass ich die SLN-Datei in einem Verzeichnis aus dem Projektordner speichern muss, damit es s auf derselben Ebene wie der Projektordner. Alle meine Wege lösten sich auf und ich konnte es wieder aufbauen.

chersull_99
quelle
0

Für mich ignorierte meine Gitignore-Datei meinen Paketordner. Die folgende Gitignore-Zeile verursachte das Problem -

**/packages/*

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

bsod_
quelle
0

Ich habe eine Korrektur für diesen Fehler erhalten. Tatsächlich hatte ich eine andere Version von MSTest.TestAdapter (1.3.2) in meinem Paketordner und in .csproj-Dateiverweisen wurde auf MSTest.TestAdapter (1.1.0) verwiesen. Ich habe alle MSTest.TestAdapter (1.1.0) durch MSTest.TestAdapter (1.3.2) ersetzt, und dies hat mein Problem behoben.

Irshad Ahmed Akhonzada
quelle
0

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

JP Sietsma
quelle
0

Ich hatte das gleiche Problem. Es stellte sich heraus, dass sich eines der Projekte, auf die ich verwies, außerhalb des Lösungsverzeichnisses befand (und daher nicht denselben Ordner '/ packages' freigegeben hat). Die Lösung, die für mich funktioniert hat, bestand darin, die Lösung des Referenzprojekts zu öffnen und dort zu erstellen. Sobald dieses Projekt erstellt wurde, verschwanden die Fehler.

bmontalvo
quelle