2013-09-27 12 views
7

Mam nadzieję, że ktoś może pomóc zdiagnozować, co jest nie tak z moją kompilacją. Używam Visual Studio 2012, NuGet 2.7, & TFS Service (git). Byłem w stanie poruszać się następujący błąd:Błąd braku pakietu NuGet podczas próby użycia Serwera TFS

"C:\a\src\src\RecipeDb.Mvc\RecipeDb.Mvc.csproj (361): 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=317567." 

mam włączony pakiet funkcji przywracania (ale myślę, że słyszałem z Nuget 2,7 to nie ma znaczenia). W każdym razie uważam, że pomocny blog o tym problemie w: Blog Article

Tu jest mój obecny scenariusz build:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" 
     DefaultTargets="Build" 
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <PropertyGroup> 
    <OutDir>$(MSBuildThisFileDirectory)bin</OutDir> 
    <Configuration>Release</Configuration> 
    <ProjectProperties> 
     OutDir=$(OutDir); 
     Configuration=$(Configuration); 
    </ProjectProperties> 
    </PropertyGroup> 

    <ItemGroup> 
    <Solution Include="$(MSBuildThisFileDirectory)src\*.sln" /> 
    </ItemGroup> 

    <Target Name="RestorePackages"> 
    <Exec Command="&quot;$(MSBuildThisFileDirectory)src\.nuget\NuGet.exe&quot; restore &quot;%(Solution.Identity)&quot;" /> 
    </Target> 

    <Target Name="Clean"> 
    <MSBuild Targets="Clean" 
      Projects="@(Solution)" 
      Properties="$(ProjectProperties)" /> 
    </Target> 

    <Target Name="Build" DependsOnTargets="RestorePackages"> 
    <MSBuild Targets="Build" 
      Projects="@(Solution)" 
      Properties="$(ProjectProperties)" /> 
    </Target> 

    <Target Name="Rebuild" DependsOnTargets="RestorePackages"> 
    <MSBuild Targets="Rebuild" 
      Projects="@(Solution)" 
      Properties="$(ProjectProperties)" /> 
    </Target> 

</Project> 

i tu jest mój build log:

Build started 9/27/2013 1:01:14 AM. 
Project "C:\a\src\build.proj" on node 1 (default targets). 
RestorePackages: 
    "C:\a\src\src\.nuget\NuGet.exe" restore "C:\a\src\src\RecipeDb.sln" 
Project "C:\a\src\build.proj" (1) is building "C:\a\src\src\RecipeDb.sln" (2) on node 1 (Build target(s)). 
ValidateSolutionConfiguration: 
    Building solution configuration "Release|Any CPU". 
Project "C:\a\src\src\RecipeDb.sln" (2) is building "C:\a\src\src\RecipeDb.Mvc\RecipeDb.Mvc.csproj" (3) on node 1 (default targets). 
C:\a\src\src\RecipeDb.Mvc\RecipeDb.Mvc.csproj(361,5): error : 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=317567. 
Done Building Project "C:\a\src\src\RecipeDb.Mvc\RecipeDb.Mvc.csproj" (default targets) -- FAILED. 
Project "C:\a\src\src\RecipeDb.sln" (2) is building "C:\a\src\src\RecipeDb.Mvc.Tests\RecipeDb.Mvc.Tests.csproj" (5) on node 1 (default targets). 
C:\a\src\src\RecipeDb.Mvc.Tests\RecipeDb.Mvc.Tests.csproj(144,5): error : 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=317567. 
Done Building Project "C:\a\src\src\RecipeDb.Mvc.Tests\RecipeDb.Mvc.Tests.csproj" (default targets) -- FAILED. 
Done Building Project "C:\a\src\src\RecipeDb.sln" (Build target(s)) -- FAILED. 
Done Building Project "C:\a\src\build.proj" (default targets) -- FAILED. 

Build FAILED. 

"C:\a\src\build.proj" (default target) (1) -> 
"C:\a\src\src\RecipeDb.sln" (Build target) (2) -> 
"C:\a\src\src\RecipeDb.Mvc\RecipeDb.Mvc.csproj" (default target) (3) -> 
(EnsureBclBuildImported target) -> 
    C:\a\src\src\RecipeDb.M 
vc\RecipeDb.Mvc.csproj(361,5): error : 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=317567. 


"C:\a\src\build.proj" (default target) (1) -> 
"C:\a\src\src\RecipeDb.sln" (Build target) (2) -> 
"C:\a\src\src\RecipeDb.Mvc.Tests\RecipeDb.Mvc.Tests.csproj" (default target) (5) -> 
    C:\a\src\src\RecipeDb.Mvc.Tests\RecipeDb.Mvc.Tests.csproj(144,5): error : 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=317567. 

    0 Warning(s) 
    2 Error(s) 

Time Elapsed 00:00:09.21 

więc skopiowałem jego build zaloguj się i po prostu zmień ścieżkę gdzie nuget.exe jest. Wydaje się, że polecenie Nuget.exe działa, ale najwyraźniej nie pobiera pakietów. Oczywiście budowanie lokalnie działa dobrze (nawet jeśli usunę katalogu paczek

Odpowiedz

4

Jak widzę w link w linii komunikat o błędzie Wysłany:.

Jest poprawa Nuget 2.7 jak poniżej:

The Improvement

We’ve updated Microsoft.Bcl.Build to use a different approach. The new version will use a conditional import similar to what NuGet’s automatic import feature does . This will always allow the project to load in Visual Studio.

However, Microsoft.Bcl.Build also adds a target to your project that will run after the build is finished. This target checks whether the current build restored packages and if so fail the build with an actionable error message:

Package Restore Error

The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568 .

Building a second time will fix this error. Please note that this error will only appear if packages were missing so it’s not like you always have to build twice.

jednak poniżej, że mówi, że nie będzie adres serwera build/ciągłej integracji (CI) scenariusze i wymaga rozwiązania, jak określono w poniższym fragmencie z artykułu:

This solution doesn’t address build server/continuous integration (CI) scenarios. In order to successfully use package restore on the build server, you have two options:

  1. Check-in the .targets file.
  2. Explicitly run NuGet package restore prior to building your project/solution.

Mam nadzieję, że problem, z którym się spotykasz, wynika również z tego.

+1

@ James, myślę, że to był komplement. Właśnie wysłałem tę część z linku, który chciał być pomocny w rozwiązaniu problemu. Powszechną praktyką stosowaną w StackOverflow jest publikowanie wymaganej części z linków, które publikujesz, ponieważ treść linków może zostać uszkodzona w przyszłości, ale także te posty powinny być znaczące. – RinoTom

+2

Budowanie dwa razy nie działa dla mnie :(otrzymuję ten sam błąd dwa razy: '" C: \ ścieżka \ projekt.csproj "(cel domyślny) (4) -> (Cel zapewnianiaBclBuildImported) -> C: \ ścieżka \ project.csproj (142,5): error: Ten projekt odwołuje się do pakietów NuGet, których nie ma na tym komputerze. Włącz NuGet Package Restore, aby je pobrać. Aby uzyskać więcej informacji, zobacz http://go.microsoft.com/ fwlink /? LinkID = 317567. " –

1

Dla mnie odniesienie do Microsoft.Bcl.Build i BeforeTargets = "BeforeBuild" powodowało problemy. Zostało to dodane, gdy Microsoft.Bcl.Build został dodany jako zależność do pakietu Azure Nuget. Spróbuj sprawdzić plik projektu i go usunąć.

<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" /> 
    <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''"> 
    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="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=317567." HelpKeyword="BCLBUILD2001" /> 
    <Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" /> 
    </Target> 
+0

To samo dla mnie: Edytowałem pliki .csproj (kilka projektów) i usunąłem część związaną z Bcl. To rozwiązało problem. – jbarrameda