2015-12-25 5 views
14

Wenn ich versuche, meine Lösung zu erstellen, erhalte ich die folgende Fehlermeldung:Build-Fehler, Dieses Projekt verweist NuGet

Severity Code Beschreibung Projektdatei Zeilenunterdrückungszustand Fehler Dieses Projekt verweist NuGet Paket (n), fehlen auf dieser Computer. Verwenden Sie NuGet Package Restore, um sie herunterzuladen. Weitere Informationen unter finden Sie unter http://go.microsoft.com/fwlink/?LinkID=322105. Die fehlende Datei ist .. \ packages \ Microsoft.Net.Compilers.1.1.1 \ build \ Microsoft.Net.Compilers.props. MusicKarma C: \ Benutzer \ Bryan \ Dokumente \ Visual Studio 2015 \ Projects \ MusicKarma \ MusicKarma.csproj 268

Wenn ich in meinem Pakete Ordner suchen, die ich finden kann ich genannt Microsoft.Net.Compilers.props Datei

Ich habe versucht, Nuget Restore zu verwenden, aber es sagt immer, dass ich alle Pakete habe. Wer kann mir helfen?

Das passiert, wenn ich dieses Projekt von TFS zu einem meiner Computer nehme.

Antwort

15

Zuerst würde ich prüfen, ob Ihr MusicKarma-Projekt Microsoft.Net.Compilers in seiner packages.config-Datei hat. Wenn nicht, könnten Sie alles, was mit diesem NuGet-Paket zu tun hat, aus Ihrem MusicKarma.csproj entfernen.

Wenn Sie das Microsoft.Net.Compilers NuGet-Paket verwenden, dann ist mein Tipp, dass der Pfad falsch ist. Wenn ich den Verzeichnisnamen in der Fehlermeldung ansehe, würde ich vermuten, dass sich die MusicKarma-Lösungsdatei (.sln) im selben Verzeichnis wie MusicKarma.csproj befindet. Wenn dies der Fall ist, ist das Paketverzeichnis wahrscheinlich falsch, da sich das Paketverzeichnis standardmäßig im Lösungsverzeichnis befindet. Also gehe ich davon aus, dass Ihre Pakete Verzeichnis ist:

C:\Users\Bryan\Documents\Visual Studio 2015\Projects\MusicKarma\packages 

Während Ihre MusicKarma.csproj Datei wird für die Requisiten suchen Datei in:

C:\Users\Bryan\Documents\Visual Studio 2015\Projects\packages\Microsoft.Net.Compilers.1.1.1\build 

Also, wenn das der Fall ist, dann können Sie das Problem beheben indem Sie den Pfad in Ihrer MusicKarma.csproj-Datei bearbeiten oder das NuGet-Paket neu installieren.

18

Dieses Problem erschien mir, als ich Ordner im Dateisystem (nicht in meiner Lösung) erstellte und einige Projekte umstellte.

Es stellt sich heraus, dass die Paketpfade relativ zu den csproj-Dateien sind. So hatte ich die "HintPath" meine Referenzen zu ändern:

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> 
     <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath> 
     <Private>True</Private> 
</Reference> 

An:

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> 
     <HintPath>..\..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath> 
     <Private>True</Private> 
</Reference> 

Beachten Sie die doppelte ".. \" in 'HintPath'.

musste ich auch zum Beispiel meine Fehlerbedingungen ändern, die ich ändern musste:

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props'))" /> 

An:

<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props'))" /> 

Auch die doppelte bemerken ".. \".

+0

Dank für die Antwort von unschätzbarem Wert, gespeichert Sie meinen Tag :) – katmanco

+0

Dank, half ihr mir viel, vorsicht mit Pfad zum Paketordner –

1

Ich hatte auch diesen Fehler ich diesen Teil von CSPROJ Datei Code nahm:

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

Was meinst du mit: * Ich habe diesen Teil der .csproj-Datei * genommen? Hast du es gelöscht? –

+0

Nein, löschen Sie nur diesen Teil des Codes. Wenn Sie die Datei .csproj mit Notepad öffnen, löschen Sie den Targuet-Code, speichern und öffnen Sie ihn normal –