2012-09-27 10 views
10

Zainstalowałem VS 2012 Premium, korzystając z opcji pełnej instalacji. Kiedy tworzę nowy projekt asp.net, czy to jest formularze, czy jakakolwiek z wersji mvc, a następnie próbuję zbudować projekt, aby uruchomić go bez żadnych modyfikacji, otrzymuję komunikat o błędzie "brakujący zestaw lub odniesienie" dla następujących:Brakujące złożenia w domyślnych szablonach projektów

  • Antlr3.Runtime
  • DontNetOpenAuth.AspNet
  • DontNetOpenAuth.Core
  • DontNetOpenAuth.OAuth
  • DontNetOpenAuth.OAuth.Consumer
  • DontNetOpenAuth.OpenID
  • DontNetOpenAuth.OpenID.RelyingParty-
  • Newtonsoft.Json
  • System.Web.Optimisation
  • WebGrease

nie wprowadził w nich, są one częścią szablonów. Wróciłem do instalacji, by sprawdzić i wszystko zostało zainstalowane, więc nie zostawiłem żadnego komponentu.

Ktoś ma pojęcie, co przegapiłem podczas instalacji VS2012? Jeśli niczego nie przeoczyłem, nie mogę uwierzyć, że Microsoft umieściłby odniesienia do złożeń w swoich szablonach, a następnie oczekiwał, że pobierzesz je przed zbudowaniem któregokolwiek ze swoich szablonów projektów.

+0

Są to wszystkie biblioteki stron trzecich nie zawarte w Visual Studio. Być może Twoja instalacja zaimportowała szablony ze starszej wersji lub innej instalacji. – akton

+0

Jest to czysta instalacja na nowym komputerze, więc nie było żadnych poprzednich instalacji VS na tym komputerze przed zainstalowaniem VS2012. Sprawdziłem szablon i obejmuje on te złożenia. Kod w szablonie również odwołuje się do nich. – MrThirsty

Odpowiedz

3

Myślę, że to problem z instalacją Nuget lub lokalną pamięcią podręczną.

szablony Wszystko VS2012 zawierać odwołań do bibliotek zewnętrznych (np DontNetOpenAuth lub Newtonsoft). Oto przykład z szablonu projektu MVC4:

... 
<WizardData> 
    <packages repository="registry" keyName="AspNetMvc4VS11" isPreunzipped="true"> 
     ... 
     <package id="DotNetOpenAuth.AspNet" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.Core" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.OAuth.Consumer" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.OAuth.Core" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.OpenId.Core" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.OpenId.RelyingParty" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="WebGrease" version="1.1.0" skipAssemblyReferences="true" /> 
     ...  
    </packages> 

wiem, jest tam lokalny cache pakietów Nuget (C:\Users\youraccount\AppData\Local\NuGet\Cache). VS zawiera pamięć podręczną podobną do Entity Framework (C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\NuGet Packages)

Z niejasnego powodu wydaje się, że jeśli utworzysz nowy projekt, VS nie może znaleźć tych zewnętrznych odniesień.

Staraj się więc uzyskać najnowszą wersję Nuget i spróbuj uzyskać wszystkie te pakiety co najmniej raz.

+0

Usunąłem wszystkie pliki w Nuget \ Cache i utworzyłem nowy projekt MVC 4, a wszystkie odniesienia zostały utworzone poprawnie =) – bloparod

+0

Musiałem również usunąć pakiety NuGet z mojego folderu pakietów. – bloparod

2

Tak więc okazuje się, że problem jest TFS:

byłem dodawanie nowych projektów internetowych, do roztworu, który był w TFS, ale w tym czasie mój serwer TFS nie była dostępna z powodu braku dostępu do Internetu. Ponieważ VS nie mógł skontaktować się z TFS, przywracał instalację tych pakietów z lokalnego sklepu. stąd mój problem. Dodałem je dziś rano z dostępem do Internetu i działało dobrze.

Morał z historii, upewnij się, że możesz uzyskać dostęp do TFS przed dodaniem tych szablonów projektu do rozwiązania kontrolowanego przez źródło.

0

mam ten problem, z dokładnie tych brakujących odniesień, kiedy przeniósł się do projektu, ponieważ został utworzony w katalogu macierzystego roztworu.

Nie udało mi się tego rozwiązać, manipulując konfiguracją NuGet. Wyglądały, jakby zostały zainstalowane poprawnie.

Potem zmieniłem nazwę mojego oryginalnego projektu i utworzyłem nowy projekt z oryginalną nazwą. Zostało to poprawnie zbudowane. Następnie obejrzałem pliki .csproj i odkryłem, że ścieżki podpowiedzi zostały zmienione. Są to ścieżki względne, co tłumaczy, dlaczego stały się nieważne.

Więc

<Reference Include="Newtonsoft.Json"> 
    <HintPath>..\<some parent directory>\packages\Newtonsoft.Json.4.5.6\lib\net40\Newtonsoft.Json.dll</HintPath> 

zostało skorygowane do:

<Reference Include="Newtonsoft.Json"> 
    <HintPath>..\packages\Newtonsoft.Json.4.5.6\lib\net40\Newtonsoft.Json.dll</HintPath> 

Chyba można to zrobić ręcznie.