Twórz ASP.NET 4.5 bez programu Visual Studio na serwerze kompilacji

81

Minęło trochę czasu, odkąd skonfigurowałem serwer kompilacji, więc może o czymś zapomniałem, a może .NET 4.5 różni się od wersji, w której to robiłem ostatnim razem, ale oto mój problem.

Próbuję skonfigurować serwer kompilacji, aby monitorować repozytorium kontroli źródła. Zawsze, gdy coś się zmieni, chcę, aby serwer ściągnął zmiany i skompilował projekt. Jeśli nie ma błędów, chcę wdrożyć witrynę w witrynie internetowej działającej na serwerze kompilacji.

W przeszłości, kiedy to robiłem, wydawało mi się, że mogę to zrobić mając tylko .NET, ale kiedy próbuję zbudować ten projekt, pojawia się błąd, że „C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v11 .0 \ WebApplications \ Microsoft.WebApplication.targets ”, a jeśli sprawdzę, widzę, że go brakuje. W rzeczywistości nie ma plików docelowych programu Visual Studio 11.

Po wielu przemyśleniach i drapaniu w głowę wyszedłem i dostałem pakiet „Windows 8 / .NET 4.5 SDK”, myśląc, że zestaw .NET 4.5 SDK może zainstalować potrzebne pliki docelowe, ale tak się nie stało, chyba że zainstalowałem go w jakiś sposób nieprawidłowo .

Więc co muszę umieścić na serwerze kompilacji, aby projekt mógł się skompilować. Wolałbym nie instalować pełnego programu Visual Studio 2012.

Zack
źródło
Odkąd to opublikowałem, robiłem badania. Daj mi znać, jeśli idę w złym kierunku. Wygląda na to, że był to również problem z Visual Studio 2010 i wygląda na to, że ludzie rozwiązali to na kilka sposobów. Jednym z nich była instalacja programu Visual Studio Team Explorer. Próbowałem, ale mój serwer to Win 2008 r1, a VSTE2012 nie jest kompatybilny. Innym rozwiązaniem, które jest trochę przerażające, jest skopiowanie plików docelowych z innego komputera. to mnie posunęło dalej, ale teraz otrzymuję błędy, że brakuje moich zestawów referencyjnych, co, jak sądzę, jest związane z pierwotnym problemem. Czy jest inny sposób?
Zack
3
Jesteś na dobrej drodze. Najłatwiejszym sposobem rozwiązania problemu jest zainstalowanie VS 2010 na serwerze kompilacji. To jest jednak trochę tępy instrument. Drugim sposobem byłoby zrobienie tego, co robisz, pobranie celów i powiązanych zależności z innej maszyny i wdrożenie tylko tych plików na serwerze. Niebezpieczeństwo związane z tym podejściem polega na tym, że dodatek Service Pack VS może zmienić skopiowane pliki, a serwer kompilacji będzie używać nieaktualnej wersji tych elementów docelowych, podczas gdy programiści używają zaktualizowanych wersji.
James Reed
Masz na myśli VS2012? Tak. Sprawdzę, ale zakładam, że nie jest to porównywalne z serwerem Win 2008 R1, ponieważ Team Explorer 2012 nie był, ale źle sprawdzony podwójnie.
Zack
1
Przepraszam, że przegapiłem bit 2012, myślę, że zostanie zainstalowany tylko na serwerze 2008 R2, ponieważ działa tylko z win 7 po stronie klienta. Zakładam, że aktualizacja systemu operacyjnego na serwerze kompilacji nie wchodzi w grę?
James Reed
tak, myślałem o aktualizacji systemu operacyjnego serwera. Mam zamiar się temu przyjrzeć, ale nie jestem pewien, czy będę mógł.
Zack,

Odpowiedzi:

35

Mój problem był związany z instalacją zestawu Windows Software Development Kit (SDK) dla systemu Windows 8 na komputerze z systemem Windows 2008. Jeśli przeczytasz dalej na stronie, dojdziesz do nagłówka oznaczonego „.NET Framework 4.5 SDK Tools w systemie Windows Vista i Windows Server 2008”. To nakazuje:

  1. Uruchom instalator Windows SDK dla systemu Windows 8 w obsługiwanym systemie operacyjnym (na przykład Windows 7 lub Windows 8).
  2. Wybierz następującą opcję na ekranie Określ lokalizację: Pobierz zestaw Windows SDK, aby zainstalować go na innym komputerze.
  3. Kliknij przycisk Dalej.
  4. Odpowiedz na pytania na ekranie Dołącz do programu poprawy jakości obsługi klienta (CEIP).
  5. Na następnym ekranie wybierz funkcję zestawu Software Development Kit .NET Framework 4.5. Odznacz wszystkie inne funkcje, które można odznaczyć.
  6. Wybierz przycisk Pobierz.
  7. Przejdź do lokalizacji pobierania (określonej w kroku 2) i znajdź następujące pliki instalatora narzędzia .NET Framework 4.5 SDK: sdk_tools4.msi, sdk_tools4.cab
  8. Możesz skopiować te pliki na komputer z systemem Windows Vista lub Windows 2008 Server w organizacji. Pliki te należy skopiować do tego samego katalogu na komputerze z systemem Windows Vista lub Windows 2008 Server. Uwaga: nie rozpowszechniaj tych plików poza swoją organizację ani w ramach innego instalatora.
  9. Na komputerze z systemem Windows Vista lub Windows 2008 Server przejrzyj postanowienia licencyjne tutaj.
  10. Sprawdź, czy na komputerze jest już zainstalowany program .NET Framework 4.5. W przeciwnym razie pobierz i zainstaluj .NET Framework 4.5 ze strony www.microsoft.com.
  11. Otwórz wiersz polecenia z uprawnieniami administratora.
  12. Przejdź do katalogu, w którym skopiowano pliki instalatora .NET Framework 4.5 SDK Tools.
  13. Zainstaluj narzędzia .NET Framework 4.5 SDK za pomocą wiersza poleceń: Msiexec / i sdk_tools4.msi VSEXTUI = 1
SwampyFox
źródło
Dzięki Swampy. Oznaczę tę odpowiedź jako poprawną, ale chciałem tylko wspomnieć o kilku rzeczach. Nie zamierzam tego testować, ale Twoja odpowiedź wygląda na to, że może zadziałać. Zamiast tego po prostu aktualizujemy serwer. Po drugie, czy wiesz, czy zrobienie tego w ten sposób pozwoliłoby na aktualizację składników po wydaniu poprawek i dodatków Service Pack?
Zack
Postępowałem zgodnie z tymi instrukcjami w przypadku serwera 2008, ale niestety nadal widzę pliki .nlp, a mscorlib jest uwzględniane we wdrożeniach za pomocą wdrażania internetowego
Nathan
1
Dziękuję Ci bardzo. Używam Jenkinsa i właśnie zaktualizowałem mój projekt do korzystania z .NET 4.5. Kiedy wysyłam swoją pracę do Jenkinsa, nie narzekał on na niewłaściwą wersję, narzekał na brak montażu System.Runtime. Wolę to rozwiązanie od ręcznego kopiowania plików, ponieważ to rozwiązanie jest łatwiejsze do zautomatyzowania.
Ido Ran
Używam systemu Windows Server 2012 i mam VS2012 w systemie Windows 8 (maszyna deweloperska). Tylko ja wymagam celów dla MsBuild "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \. SDK zawiera znacznie więcej, prawda?
Kiquenet
84

Aby działać na serwerze CI bez programu Visual Studio, wystarczy skopiować kilka folderów z maszyny deweloperskiej do tej samej lokalizacji na serwerze CI. Nie ma potrzeby instalowania zestawu SDK.

VS 2015:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications

VS 2013:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications

VS 2012:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications

VS 2010:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

.NET 4.6:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5.2:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.2

.NET 4.5.1:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.1

.NET 4.5:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5

.NET 4.0.1:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0.1

.NET 4.0:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0

Lub, jak zasugerował Matt , możesz skopiować je do podkatalogu projektu i zmienić <MSBuildExtensionsPath32>lokalizację w pliku MSBuild (zwykle .csprojlub .vbproj).

Gdy to zrobisz, twój projekt zostanie skompilowany.

Należy również jawnie ustawić zmienną środowiskową VisualStudioVersion na wersję programu Visual Studio (10,0 dla VS2010, 11,0 dla VS2012, 12,0 dla VS2013, 14,0 dla VS2015), której używasz, aby upewnić się, że jest ustawiona bezpośrednio w konfiguracji.

NightOwl888
źródło
6
to rozwiązało problem za nas +1. Z maven / java to orzechy.
NimChimpsky
Zestawy referencyjne nie są zainstalowane z .NET Framework? Nie ma celów MSBuild. Nie jestem pewien, czy zestawy referencyjne, myślę, że tak.
Kiquenet
Skopiowanie C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 z komputera deweloperskiego do tego samego folderu na komputerze kompilacji załatwiło sprawę po tym, jak Team City nie mógł skompilować rozwiązania .NET 4.5, jednak .NET 4.0 rozwiązanie wcześniej się skompilowało.
Tore Aurstad
+1 dla zestawów referencyjnych. Buduję projekt 4.5.1 przy użyciu Teamcity i MSBuild14 i to było brakujące łącze na moim komputerze agenta kompilacji.
N. Warfield
to jest głupi problem, ale proste rozwiązanie.
cori
25

Z msdn :

Zestaw Windows SDK nie jest już dostarczany z pełnym środowiskiem kompilacji wiersza polecenia. Musisz oddzielnie zainstalować kompilator i środowisko kompilacji. Jeśli potrzebujesz pełnego środowiska programistycznego obejmującego kompilatory i środowisko kompilacji, możesz pobrać program Visual Studio 2012 Express, który zawiera odpowiednie składniki zestawu Windows SDK.

Aby to naprawić, musiałem skopiować folder C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5z mojego komputera deweloperskiego (który przy okazji ma Visual Studio 2012) do agentów kompilacji. Po tej operacji Team City nie zgłosił więcej błędów, a plik mscorlib.dll nie został wyprowadzony do folderu bin.

Marius
źródło
dzięki, to naprawiło to dla mnie, bez konieczności pobierania sdk. (lub którykolwiek z kroków w zaakceptowanej odpowiedzi)
Cohen
1
To zdecydowanie powinna być akceptowana odpowiedź. O wiele łatwiejsze, ponieważ na pewno masz już maszynę z zespołami referencyjnymi.
Josh Kodroff
1
@artfulhacker VS 2012 i Win 8 SDK nie są instalowane na Win2k8 R1. Jeśli jesteś na R1 tak jak ja, musisz skopiować zestawy referencyjne.
Josh Kodroff
@JoshKodroff zapomniał wspomnieć, mamy agentów kompilacji serwera 2012, dzięki za wyjaśnienie
artfulhacker
1
Ale w tym katalogu nie ma kopii pliku msbuild.exe. Zainstalowałem VS2012 na moim komputerze deweloperskim (nie na maszynie do kompilacji) i nadal nie widzę wersji 4.5.
popioły 999
12

W tym przypadku pomogą Microsoft Build Tools 2013 , ponieważ strona pobierania opisuje:

Jeśli nie masz zainstalowanego programu Visual Studio na komputerze, możesz użyć narzędzi kompilacji 2013 do tworzenia aplikacji zarządzanych. Kompilatory Visual Basic i C # są również zawarte w tym pliku do pobrania. (We wcześniejszych wersjach te narzędzia były zawarte w autonomicznej platformie .NET Framework).

Rajesh
źródło
1
Trochę więcej wyjaśnień może pomóc innym programistom zrozumieć, jak działa łącze referencyjne, ponieważ w przyszłości może ono już nie istnieć.
NJInamdar
Microsoft Build Tools 2013 dla VS 2013, a także VS 2012 ? Tak czy inaczej, lepiej zainstalować Microsoft Build Tools lub Visual Studio Agents 2012 stackoverflow.com/a/20373256/206730 ?
Kiquenet
8

Mój dział lubi minimalistyczne podejście do tego, co jest zainstalowane na naszych maszynach do kompilacji z systemem Windows 7. Jednak nie lubimy po prostu kopiować i wklejać plików / folderów z powodu potencjalnych problemów z kluczami rejestru. Zamiast instalować VS 2013, zainstalowałem następujące znacznie mniejsze i darmowe komponenty. Teraz zespół programistów może pomyślnie tworzyć aplikacje internetowe VS 2013.

ckkkitty
źródło
Dziękuję bardzo. Zawsze się zastanawiałem, jak to zrobić Microsoft.WebApplication.targetsi nigdy nie wiedziałem o tej izolowanej powłoce!
William Gross
6

Rozwiązuję ten problem z agentami Visual Studio.

Możesz spróbować zainstalować agentów programu Visual Studio 2012.

http://www.microsoft.com/en-us/download/details.aspx?id=38186

Drelich
źródło
Nie działa dla VS2013. Zainstalowałem agenta i kontrolera, ale C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 nie został utworzony
Guillaume
1
Oczywiście dostępni są również agenci dla Visual Studio 2013 - dla tych, którzy czytają tę odpowiedź, mając na uwadze VS 2013, a nie VS 2012.
J0e3gan
2
To rzeczywiście działa! Wystarczy zainstalować Visual Studio 2013 Shell (izolowany) (x86), a następnie Visual Studio 2013 Shell (zintegrowany) (x86)
Andrii
@Andrii Visual Studio Agents 2012 wymaga zainstalowania? czy tylko Visual Studio 2012 i 2013 Shell (izolowana) (x86) i Visual Studio 2012 i 2013 Shell (zintegrowana) (x86) bez instalowania agentów VS ?
Kiquenet
Tylko muszle. Zainstalowałem tylko 2013
Andrii